лотерея - PullRequest
       15

лотерея

0 голосов
/ 21 марта 2019

Я начал писать программу симуляции лотереи с использованием C-программирования, однако, когда я компилирую программу, я получаю ошибку компиляции, которую я не понимаю.

#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? :");
        scanf("%d", &years);
        printf("Ok. I will now play the lottery %d year(s)");
        printf("Sleep Tight :)....");
    //Generate Random Numbers
        int ctr;
        int randnums[6];
        srand(time(NULL));
        for( ctr = 0; ctr < 6; ctr++ ) randnums[ctr] = (rand() % 50);

    //Check Numbers with Rogerns numbers
        int win;
        for( ctr = 0; ctr < 6; ctr++ ) (randnums[ctr] == nums[ctr]) ? win = 1 : win = 0;




    return 0;
}

Это ошибка компиляции, которую я получаю:

LotteryNumbers.c:29:79: error: expression is not assignable
  ...= 0; ctr < 6; ctr++ ) (randnums[ctr] == nums[ctr]) ? win = 1 : win = 0;
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
4 warnings and 1 error generated.

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Проблема в том, что синтаксис при использовании троичного оператора :

<condition> ? <true-case-code> : <false-case-code>; 

Таким образом, в вашем случае:

for( ctr = 0; ctr < 6; ctr++ ) win = (randnums[ctr] == nums[ctr]) ? 1 : 0;

Однако это не такчто все числа совпадают, он просто устанавливает win на результат проверки текущего номера.Чтобы проверить, все ли числа совпадают, вы можете попробовать:

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
    }
}
0 голосов
/ 21 марта 2019

Изменение:

for( ctr = 0; ctr < 6; ctr++ ) (randnums[ctr] == nums[ctr]) ? win = 1 : win = 0;

на:

for( ctr = 0; ctr < 6; ctr++ ) win = (randnums[ctr] == nums[ctr]) ? 1 : 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...