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

Регистрация
22 Дек 2012
Сообщения
71
Репутация
0
Спасибо
0
Монет
0
Я сделала так, но вместо того, чтобы найти минимальное четное из перечисленных чисел, присваивает последнее число.



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
 
#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!");
}
 
У тебя при вводе s идёт метод if, но нет else. Ты вводишь (и тем самым присваиваешь) к s новое значение и,даже если в конструкции if оно не делится на цело, ты все равно присваиваешь к min значение s. Добавь сравнение s с min после if
 
В вашей программе нет проверки очередного найденного числа на минимальность. Добавьте его.
Да и нет смысла хранить число циклов N, поэтому счетчик можно организовать прямо на нем, не вводя переменную i.

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