ПОМОГИТЕ ПЛИЗ С ЗАДАЧОЙ ПО С++!!!!! ДАЮ 30 БАЛЛОВ!!!
Условие
Дана последовательность целых чисел, оканчивающаяся нулём. Необходимо найти число, наиболее близкое к максимальному по величине числу в этой последовательности (второй максимум). Ноль числом последовательности не считается.
Если в последовательности два числа равных максимуму, то вторым максимумом считается число равное первому максимуму.
Формат входных данных
Вводится не более чем 2 (в 15 степени) целых чисел, каждое из которых не превосходит по модулю 2(в 15 степени)−1. После последнего числа вводится 0. Гарантируется, что последовательность содержит хотя бы два элемента.
Формат выходных данных
Требуется вывести искомое число.
входные данные
13
42
6
0
33
32
33
0
Выходные данные
13
33
Ответы
#include <iostream>
using namespace std;
int main() {
int x, max, max2;
cin >> x;
max = x;
cin >> x;
max2 = x;
while (x != 0) {
if (x > max2) {
max2 = x;
}
if (max2 > max) {
int d = max;
max = max2;
max2 = d;
}
cin >> x;
}
cout << max2;
return 0;
}
Код программы:
#include <iostream>
#include <locale>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int a, max1, max2;
bool f = true;
cout << "Введите числа:" << endl;
cin >> a;
max1 = a;
max2 = a;
while (a) {
cin >> a;
if (max1 < a && a != 0) {
max2 = max1;
max1 = a;
f = false;
}
else {
if (f) {
max2 = a;
f = false;
}
if ((max2 < a || a == max1) && a != 0)
max2 = a;
}
}
cout << "Второе максимальное число: " << max2 << endl;
return 0;
}