• Предмет: Информатика
  • Автор: Аноним
  • Вопрос задан 3 года назад

ПОМОГИТЕ ПЛИЗ С ЗАДАЧОЙ ПО С++!!!!! ДАЮ 30 БАЛЛОВ!!!

Условие
Дана последовательность целых чисел, оканчивающаяся нулём. Необходимо найти число, наиболее близкое к максимальному по величине числу в этой последовательности (второй максимум). Ноль числом последовательности не считается.

Если в последовательности два числа равных максимуму, то вторым максимумом считается число равное первому максимуму.

Формат входных данных
Вводится не более чем 2 (в 15 степени) целых чисел, каждое из которых не превосходит по модулю 2(в 15 степени)−1. После последнего числа вводится 0. Гарантируется, что последовательность содержит хотя бы два элемента.

Формат выходных данных
Требуется вывести искомое число.

входные данные
13
42
6
0

33
32
33
0
Выходные данные
13

33


restIess: Не мой день походу сегодня, у нас же бесконечное число попыток? :D
Аноним: Да
restIess: Еще раз отредактирова)
Аноним: Вы на верном пути, почти все правильно. В одном тесте только проблема осталась
Аноним: Input
-5
-4
-3
-2
0
Correct
-3
Output
-2
Checker
wrong answer expected -3, found -2
restIess: о, чето новенькое)
restIess: Очередной раз исправил свой ....код
restIess: А, хотя не, не исправил
restIess: Ладно, моя последняя попытка, проверьте xD
Arkassssha: Ошибку с отрицательными числами исправил, проверяйте

Ответы

Ответ дал: restIess
2

#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;

}  


Аноним: Что-то все совсем плохо стало
Аноним: 8 неправильных тестов
Ответ дал: Arkassssha
1

Код программы:

#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;

}


Аноним: То же самое
Аноним: Частичное решение
Аноним: И неправильные выходные данные в отрицательных числах
Arkassssha: С какими данными выдает ошибку?
Аноним: Input
-5
-4
-3
-2
0
Correct
-3
Output
-2
Checker
wrong answer expected -3, found -2
Аноним: Так же как и было
Arkassssha: Перепроверь код
Arkassssha: В новом коде, который я обновил, все работает
Аноним: Все работает, спасибо
Arkassssha: :)
Вас заинтересует