Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как найти минимальное четное число в C++?

Крис Сахаш Ученик (206), закрыт 2 года назад
Я сделала так, но вместо того, чтобы найти минимальное четное из перечисленных чисел, присваивает последнее число.

int N, s, i=0, min=30001;
cin >> N;

while(N>i){
cin >> s;
if(s % 2 == 0){
min=s;
}
i++;
}

cout << min;

return 0;

}

Данные для ввода:
4
3
20
6
8
Лучший ответ
Остальные ответы
Алексей Мыслитель (6947) 3 года назад
В условии ты допустила ошибку:
if((s % 2 == 0)&&(s<min))
Обэмэ Мудрец (16949) 3 года назад
У тебя при вводе s идёт метод if, но нет else. Ты вводишь (и тем самым присваиваешь) к s новое значение и,даже если в конструкции if оно не делится на цело, ты все равно присваиваешь к min значение s. Добавь сравнение s с min после if
Николай Веселуха Высший разум (383378) 3 года назад
#include <iostream>
using namespace std;
int main() {
const auto lim = numeric_limits<int>::max();
size_t n;
cin >> n;
puts("");
auto min = lim;
int x;
while (n) {
cin >> x;
if ((~x & 1) && x < min) min = x;
--n;
}
puts("");
if (min != lim) cout << min << '\n';
else puts("Not found!");
}
Сергей Гений (60494) 3 года назад
В вашей программе нет проверки очередного найденного числа на минимальность. Добавьте его.
Да и нет смысла хранить число циклов N, поэтому счетчик можно организовать прямо на нем, не вводя переменную i.

while (N) {
cin >> s;
if (s % 2 == 0) {
min = s<min?s:min; // если s<min то min = s иначе min без изменения
}
N--;
}
Похожие вопросы