Проверка 5 массивов в массиве, если 3 совпадают - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть массив int, который содержит пять случайных чисел.Я пытаюсь проверить, совпадают ли три числа.

int die[5] = {2, 3, 5, 2, 1};
int kind = 0;
int score = 0;
int i = 0;
int x = 0;

    for (i; i <= 4; i++) {
        for (x; x <= 4; x++) {
            if (die[i] == die[x]) {
                kind++;
                score += die[i];
            }
        }
    }

Проблема, с которой я сталкиваюсь, - это самый первый случай, когда он сравнивает себя с самим собой.Который всегда вернется.И если я добавлю +1 к индексу, он в конечном итоге выйдет за пределы.

Если я начну с 1, а не с 0, то, когда он перейдет ко второй цифре, он вернется один разон проверяет себя на 2-й номер (сам).

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018
int die[5] = {2, 3, 5, 2, 1};

int kind = 0;
int score = 0;

for (i = 0; i < 4; i++) {          // last check will be die[3] == die[4] to avoid 
                                   // die[4] == die[4]
    for (x = i + 1 ; x < 5; x++) { // it always checks with the next element
        if (die[i] == die[x]) {
            kind++;
            score += die[i];
        }
    }
}
0 голосов
/ 11 декабря 2018

Вы можете проверить, равен ли я j, и просто continue; ваш цикл.

for(i=0; i<=4; i++){
    // you can set x=i+1 and skip some numbers
    for(x=0; x<=4; x++){ 
        if(i==x)
            continue;
        if (die[i] == die[x]) {
            kind++;
            score += die[i];
        }
     }
 }

РЕДАКТИРОВАТЬ: Есть более простые способы сделать это (проверка, равны ли 3 числа), но если вы просто хотитечтобы пропустить итерацию, используйте продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...