Ваша проблема в том, что вы печатаете минимальное значение, если любое число нечетное.
for (int i = 0; i < 7; i++){
if(array[i] % 2 != 0){
found == 1;
}
}
Этот код просматривает каждое число в массиве, устанавливая флаг, если он естьодин из них странный.Вам нужно только проверить один номер.Таким образом, вы можете заменить приведенный выше код следующим:
found = (array[indexOfMin] % 2) != 0;
или более элегантно
found = array[indexOfMin] & 1;
... при условии, что вы действительно нашли значение, что не произойдет, если вынеправильно инициализировал min
.Из вашего примера похоже, что min
инициализируется нулем.Вы должны использовать большое число, такое как INT_MAX
, чтобы убедиться, что array[0]
всегда меньше min
, или явно установить min
в array[0]
после его инициализации , а затем пропустить тестированиеarray[0]
.
Примечание В настоящее время ваш код содержит дополнительную ошибку.Если вы собираетесь инициализировать min
в array[0]
, вам нужно сделать это после того, как array[0]
содержит действительные данные, а не заранее.Написанный код напечатает неверный индекс, если пользователь введет 8 7 6 5 4 3 2 1
.