Цикл поиска последнего четного числа в массиве в C - PullRequest
0 голосов
/ 16 мая 2019

Я хочу найти индекс последнего элемента, содержащего четное число в массиве A, с количеством элементов 'length'.
Например, для A = {1, 2, 4, 5, 7} мы бы вернули 2, так как значение 4 является последним четным числом, и оно находится в индексе 2 в массиве. Мне необходимо использовать цикл for, где нужно тестировать наименьшее количество элементов, где первая строка соответствует формату: for ( i = ??; i > ??; i = ??)

Я думаю, что с первой строкой моего кода что-то не так, но я не знаю, как это исправить.

for ( i = length-1; i >= 0; i =  i-1) { 
if ( A[i] % 2 == 0) { // value mod 2 = 0 indicates even
    return i;
}
error: subscripted value is neither array nor pointer nor vector
     'if (A[i]% 2==0) { // value mod 2 = 0 indicates even'

1 Ответ

0 голосов
/ 16 мая 2019

Вот как я бы это написал:

int num = -1;
for ( i = length-1; i > -1; i = i-1) {
  //Check if the array is even
  if( A[i] % 2 == 0 )

    // If it hasn't found an even number yet, automatically set num equal to the index
    // This avoids accessing the element in the "-1" position in the array which would
    //    give an error
    if( num == -1 )
      num = i;

    // If the element at the 'i' position is greater than the previous greatest element
    //   then set num equal to the index
    else if( A[i] > A[num] )
      num = i;
}

// It will return -1 if an even number isn't found
return num;

Это будет работать, если A - массив.Звучит так, будто А сейчас не тот массив, о котором вы думаете;это может быть массив массивов или что-то подобное.Если вы разместите оставшуюся часть кода, это поможет устранить ошибку.

Этот ответ может помочь вам с вашей ошибкой

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