#include <iostream>
using namespace std;
int main() {
int num;
// Инициализируем min1 и min2 как максимально возможные значения.
long long min1 = 1000000001LL, min2 = 1000000001LL; // Используем long long для надежности
cin >> num;
while (num != 0) {
if (num < min1) {
min2 = min1;
min1 = num;
} else if (num > min1 && num < min2) { // Убедимся, что num не равно min1
min2 = num;
}
cin >> num; // Считываем следующее число внутри цикла
}
cout << min2 << endl;
return 0;
}
#include <iostream>
#include <limits>
using namespace std;
int main() {
unsigned a, b, c;
a = b = numeric_limits<unsigned>::max();
while (true) {
cin >> c;
if (!c) break;
if (c <= a) {
b = a;
a = c;
} else if (c < b) {
b = c;
}
}
cout << '\n' << b << '\n';
}
Второй минимум
Последовательность состоит из натуральных чисел и завершается числом 0
. Определите значение второго минимального по величине элемента в этой последовательности, то есть элемента, который будет наименьшим, если из последовательности удалить наименьший элемент.
Последнее число 0
не учитывается. Гарантируется, что в последовательности есть хотя бы два элемента (кроме завершающего числа 0
).
Входные данные
На вход подаётся последовательность целых неотрицательных чисел, заканчивающаяся нулём. Все числа в последовательности по значению не превосходят 109
.
Выходные данные
Выведите ответ задачи.
Примеры
Ввод
Вывод
1
7
9
0
7
3
2
2
1
1
0
1
#include <iostream>
using namespace std;
int main() {
int num;
int min1 = 1000000001, min2 = 1000000001;
cin >> num;
while (num != 0) {
if (num < min1) {
min2 = min1;
min1 = num;
}
else if (num < min2) {
min2 = num;
}
}
cout << min2 << endl;
return 0;
}
Это my код. запускаться не хочет, подскажите пожалуйста в чем моя неточностть