简体   繁体   English

如何? - 彩票模拟 (C)

[英]How to? - Lottery Simulation (C)

i have written a C program that will simulate lottery draws of the course of X amount of years that were inputted by the user, once the the amount of years have been inputted it will simulate a lottery draw each week for however many years.我编写了一个 C 程序,该程序将模拟用户输入的 X 年数的过程中的彩票抽奖,一旦输入了年数,它将模拟每周一次的彩票抽奖多年。 the program also need to print out if the pre inputted numbers ( already in the code) match, and also to print out how many times the numbers matched eg程序还需要打印出预先输入的数字(已经在代码中)是否匹配,并打印出数字匹配的次数,例如

  • 6 numbers matched () 6 个数字匹配 ()
  • 5 numbers matched () 5 个数字匹配 ()
  • etc.等等。

This is the code that i have so far, everything compiled and runs fine:这是我到目前为止的代码,一切都编译并运行良好:

#include <stdio.h>

int main(int argc, char const *argv[])
{
    //Welcome the User to the Program
    puts("============================");
    puts("       WELCOME TO       ");
    puts("============================");
    puts("  PROJECT : JACKPOT DREAMS  ");
    puts("============================");

    //Rogers 6 Original Numbers
    int nums[6] = { 5, 11, 15, 33, 42, 43 };

    //Ask how many years to simulate
    int years = 0;
    printf("How many years would you like to sleep for? :\n");
    scanf("%d", &years);
    printf("Ok. I will now play the lottery %d year(s)\n",years);
    printf("Sleep Tight :)....\n");

    //Generate Random Numbers
    int ctr;
    int randnums[6];
    srand(time(NULL));
    while (years-- > 0) {
        for( ctr = 0; ctr < 6; ctr++ ) randnums[ctr] = (rand() % 50);

        //Check Numbers with Rogerns numbers
        int win = 1;
        for( ctr = 0; ctr < 6; ctr++ )
        {
            if(randnums[ctr] != nums[ctr])
            {
                win = 0;
                break; // if there's a mismatch we don't need to continue
            }
        }


        return 0;
    }

}

does anyone know how i would do this?有谁知道我会怎么做?

Firstly it seems that you return after looping through the first year.首先,您似乎在循环第一年之后return You should move the return statement outside the braces.您应该将return语句移到大括号外。 Secondly as some comments mentioned, you should write blocks more carefully, and make correct indents.其次,正如一些评论所提到的,您应该更仔细地编写块,并进行正确的缩进。

Below I have rewritten your program, to print out if some numbers match for a given year.下面我重写了你的程序,如果某些数字与给定的年份匹配,则打印出来。 If all numbers match, "Winner!"如果所有数字都匹配,“赢家!” is also printed.也印刷。 To do this I have added a few variables and print statements.为此,我添加了一些变量和print语句。

Hope this helps.希望这可以帮助。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int
main(int argc, char const *argv[])
{
    //Welcome the User to the Program
    puts("============================");
    puts("         WELCOME TO         ");
    puts("============================");
    puts("  PROJECT : JACKPOT DREAMS  ");
    puts("============================");

    //Rogers 6 Original Numbers
    int nums[6] = { 5, 11, 15, 33, 42, 43 };

    //Ask how many years to simulate
    int years = 0;
    printf("How many years would you like to sleep for? :\n");
    scanf("%d", &years);
    printf("Ok. I will now play the lottery %d year(s)\n",years);
    printf("Sleep Tight :)....\n");

    //Generate Random Numbers
    int numberOfWins = 0;
    int ctr;
    int randnums[6];
    srand(time(NULL));

    int currYear = 0;
    while (years-- > 0) 
    {
        currYear++;
        for( ctr = 0; ctr < 6; ctr++ ) randnums[ctr] = (rand() % 50);

        //Check Numbers with Rogerns numbers
        int win = 1, matched = 0;
        for( ctr = 0; ctr < 6; ctr++ )
        {
            if(randnums[ctr] != nums[ctr])
            {
                win = 0;
            } else {
                matched++;
            }
        }
        numberOfWins += win;

        //If any numbers matched or win, print it.
        if (matched > 0) printf("In year: %d, %d number(s) matched\n", currYear, matched);
        if (win) printf("Winner!\n");
    }

    printf("You won %d time(s)\n", numberOfWins);
    return 0;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM