Цитата(Bladex @ 28.3.2007, 23:01 ) | | Вариантов перебрал много, но не один из них не работает должным образом |
Bladex, кроме вариантов, которые предложили Kuvaldis и agl есть ещё вариант, известный ещё со школы(мама дорогая, как же давно это было). И он гласит, что сумма (или разность) двух четных чисел (равно, как и двух не четных) даёт в результате четное число. И только сумма (или разность) четного и не четного числа даёт в результате не четное число. Это правило и можно использовать в твоей программе. Продвигаясь по массиву будем проверять сумму двух рядом стоящих элементов на четность. Если она четная, то вернём порядковый номер(не путать с индексом, если нужен индекс, то нужно возвращать i, а не i + 1) правого элемента, стало быть он во всём виноват.
Цитата(Bladex @ 28.3.2007, 23:01 ) | | код функции получается просто громадным |
Вообще-то это пару строчек всего.
| Код | int check(int* ar, int n) { for(int i = 1; i < n; i++) if(!((ar[i] + ar[i - 1]) % 2)) return i + 1; return 0; } |
Для проверки:
| Код | int main() { int ar[] = {1,2,4,4,5,6,7,8,9,0}; cout << check(ar, 10) << endl; return 0; } |
|