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

Ошибка в коде на C++

жоски программист Ученик (62), открыт 1 неделю назад
Помогите решить проблему с кодом условие:
Второй минимум
Последовательность состоит из натуральных чисел и завершается числом 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 код. запускаться не хочет, подскажите пожалуйста в чем моя неточностть
3 ответа
Armangidon Профи (647) 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 && num != min1) { // проверяем на уникальность
min2 = num; // обновляем второй минимум
}
cin >> num; // считываем следующее число
}

cout << min2 << endl; // выводим второй минимум
return 0;
}
жоски программистУченик (62) 1 неделю назад
братан на втором тесте валится вот он:
вводится:
3
2
2
1
1
0
выводится должно 1, а твоя программа выдает 2
жоски программистУченик (62) 1 неделю назад
помоги плз
Вертолётов 625 Мудрец (12916) жоски программист, Эм а почему только мой ответ вы скрыли. У автора этого ответа тоже выходит: 2
жоски программистУченик (62) 1 неделю назад
ну все с чата гпт пишите да?
Вертолётов 625 Мудрец (12916) жоски программист, Нет я использую: Qwen2.5-coder-32b-instruct-Q8(обычно он умнее GPT, но тут даже у Клода проблема)
Вертолётов 625 Мудрец (12916) 1 неделю назад
Код:
 #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;
}
жоски программистУченик (62) 1 неделю назад
неа, второй тест завален
жоски программистУченик (62) 1 неделю назад
братан на втором тесте валится вот он:
вводится:
3
2
2
1
1
0
выводится должно 1, а твоя программа выдает 2
Николай Веселуха Высший разум (368762) 1 неделю назад
 #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';
}
Похожие вопросы