Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/140: Рейтинг темы: голосов - 140, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42

Найти второй максимум в последовательности чисел

08.01.2019, 20:34. Показов 28235. Ответов 62
Метки нет (Все метки)

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

Формат входных данных

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

Формат выходных данных

Требуется вывести искомое число.

Не могу понять, почему не получается:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main()
{
    signed short int max1 = 0, max2 = 0, n = 1;
 
    while (n != 0) {
        cin >> n;
        if (n >= max1){
            max2 = max1;
            max1 = n;
        }
    }
    cout << max2;
    return 0;
}
Помогите пожалуйста!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2019, 20:34
Ответы с готовыми решениями:

Найти максимум из модулей элементов последовательности действительных чисел
Дана последовательность из n действительных чисел. Замечание. Задачи из данного пункта решить, используя одномерный массив. Найти...

Найти максимум из девяти чисел(максимум из трех чисел(максимум из двух чисел)
Сделал кароч ток не знаю что в конце писать вот код: function maks_2(a,b:real):real; begin if a&gt;b then maks_2:=a else...

В последовательности из n действительных чисел найти максимум из модуля элементов
Найти максимум из модуля элементов использовать одномерный массив

62
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.01.2019, 23:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Skyer Посмотреть сообщение
Надо взять -1.
не -1, а минимальное для этого типа данных
0
 Аватар для Skyer
78 / 62 / 47
Регистрация: 05.05.2013
Сообщений: 196
08.01.2019, 23:10
Yetty, Точно. Что-то я торможу, подумал про неотрицательные числа. пойду спать.

Как вариант можно перед циклом ввести два числа и их распределить в max1 и max2

Про второй максимум в тексте же в скобках сказано, как вы определили, что это ТС добавила?
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42
08.01.2019, 23:39  [ТС]
входные данные
33
32
33
0
выходные данные
33
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
08.01.2019, 23:47
Цитата Сообщение от HateLov Посмотреть сообщение
входные данные
33
32
33
0
выходные данные
33
Код выше у меня выводит 32, вы где-то ошиблись
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 01:20
Цитата Сообщение от ReDoX Посмотреть сообщение
Код выше у меня выводит 32
почему Вы решили что это относится именно к Вашему коду ? что касается Вашего кода, не проверял, но он должен отсортировать и вывести второе числа справа, т.е. 33.
но дело не в этом. ТС нужен код на последовательность, без массивов и векторов.
Цитата Сообщение от HateLov Посмотреть сообщение
входные данные
33
32
33
0
выходные данные
33
эти данные немного под другое условие: Дана последовательность целых чисел, оканчивающаяся нулём. Необходимо найти второе максимальное по величине число (второй максимум). Ноль числом последовательности не считается.
проверил, код по ссылке, которую я Вам дал именно это и делает.
чтобы обработать условие:
Цитата Сообщение от HateLov Посмотреть сообщение
Вводится не более чем 215 целых чисел, каждое из которых не превосходит по модулю 215−1.
спрашиваю ещё раз - уточните что такое:
Цитата Сообщение от HateLov Посмотреть сообщение
по модулю 215−1.
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
09.01.2019, 01:24
Цитата Сообщение от Yetty Посмотреть сообщение
почему Вы решили что это относится именно к Вашему коду ?

Не по теме:

я не про свой код а про код который кинул последним Skyer

0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 01:42
ReDoX, понятно. интереснее найти решение такой задачи: найти наиболее близкое к максимуму число, отличное от максимума. как раз последний код Skyer вроде это и делает, ещё не проверял.
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42
09.01.2019, 14:05  [ТС]
по модулю 2^15 - 1
signed short int
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 14:39
HateLov, signed записывать необязательно, достаточно short int (или просто short). воспользовались кодом по ссылке ? напишите, что получилось.

лучше будет подключить #include<climits> и заменить INT_MIN на SHRT_MIN
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42
09.01.2019, 15:24  [ТС]
Цитата Сообщение от ReDoX Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
  int n = 1;
 
  vector<int> a;
 
  while (n != 0) {
    cin >> n;
 
    a.push_back(n);
  }
 
  sort(a.begin(), a.end());
 
  cout << a[a.size() - 2];
}
При вводе:
-5
-4
-3
-2
0
Выводит:
-3
А нужно:
-2
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
09.01.2019, 15:26
Цитата Сообщение от HateLov Посмотреть сообщение
При вводе:
-5
-4
-3
-2
0
Выводит:
-3
А нужно:
-2
максимум - -2, ближайший к максимуму - -3. В чем проблема?

+ сказали что код сложный, да к тому же ошибочный поэтому я его не трогаю
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42
09.01.2019, 15:28  [ТС]
Тьфу, наоборот. Нужно -3, а выводит -2

Добавлено через 23 секунды
Тест #17
Input
-3
-2
0
Correct
-3
Output
-2
Checker
wrong answer expected -3, found -2
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
09.01.2019, 15:33
Исправленный

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <algorithm>
#include <iostream>
#include <set>
 
using namespace std;
 
int main() {
  int n = 1;
 
  set<int> a;
 
  while (n != 0) {
    cin >> n;
 
    if (n != 0)
      a.insert(n);
  }
 
  auto it = a.cend();
 
  if (a.size() >= 2) {
    --it; --it;
  } else {
    --it;
  }
 
 
  cout << *it;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 15:38
HateLov, почему Вы не хотите просто исправить свой код из первого Вашего сообщения ? как исправить я
сообщил, если что-то осталось непонятно - спрашивайте.
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42
09.01.2019, 16:12  [ТС]
Теперь другие тесты неправильные(

Тест #2
Input
33
32
33
0
Correct
33
Output
32
Checker
wrong answer expected 33, found 32

Тест #11
Input
-12
153
-191
-310
-357
45
25
219
-730
231
-49
161
-9
-304
155
249
18
-364
-181
92
23
-643
-427
-28
73
-651
-55
-434
-629
8
-677
-525
98
94
94
-563
-20
-701
195
121
239
34
-229
46
-309
5
157
-57
133
149
-233
-575
190
-738
-258
54
-328
-373
101
-546
87
-410
-260
-234
29
-39
24
-297
43
-593
-598
190
-187
84
-187
-767
206
207
-485
127
-569
205
1
-338
-557
-618
-667
174
54
-744
-163
-459
209
-548
156
-353
-219
13
113
-537
-424
-653
-304
-344
-470
-389
78
28
-514
48
-742
28
216
58
9
-734
-680
-283
140
77
-318
28
-331
83
249
105
57
0
Correct
249
Output
239
Checker
wrong answer expected 249, found 239

Добавлено через 19 минут
У меня в коде нет INT_MIN, поэтому я не понимаю, что мне исправлять в своём коде..

Добавлено через 14 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    signed short int max1, max2 = 0, n = 1;
    cin >> max1;
 
    do {
        cin >> n;
        if (n > max1) {
            max2 = max1;
            max1 = n;
        }
        else if (n > max2) {
            max2 = n;
        }
    } while (n != 0);
    cout << max2;
    return 0;
}
2 теста не проходит. В чём прикол???
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 16:13
Цитата Сообщение от HateLov Посмотреть сообщение
У меня в коде нет INT_MIN, поэтому я не понимаю, что мне исправлять в своём коде..
ещё раз:
переходите по ссылке: Найти два наибольших числа в последовательности
берёте код из сообщения №3 (от Hitoku)
подгоняете под свою задачу (меняете типы, границы и т.д.)
тестируете у себя и выкладываете сюда для проверки (если будет что-то лишнее, чтобы откорректировать)
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
09.01.2019, 16:16
Цитата Сообщение от HateLov Посмотреть сообщение
Теперь другие тесты неправильные(
не понятно что такое второй максимум

Цитата Сообщение от HateLov Посмотреть сообщение
Тест #2
Input
33
32
33
0
Correct
33
Output
32
Checker
wrong answer expected 33, found 32
Второй максимум как раз 32, а не 33, какие-то странные тесты
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 16:23
Цитата Сообщение от ReDoX Посмотреть сообщение
Второй максимум как раз 32, а не 33
ReDoX, не путайте ТС. второй максимум для 33 32 33 это число 33
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42
09.01.2019, 16:23  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
int main()
{
    int max1 = INT_MIN, max2 = INT_MIN, m, i = 1;
       cin >> m;
       while (i != m + 1) {
           int num = 0;
           while (num < 2) {
 
              cin >> num;
           }
           if (num > max1) {
               if (max1 > max2) max2 = max1;
               max1 = num;
           }
           else if (num > max2) {
               if (max2 > max1) max1 = max2;
               max2 = num;
           }
           i++;
       }
      cout << max2 << "\n";
       system("pause");
}
Как сделать, чтобы до нуля перечислялись числа?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 16:48
HateLov, наверное Вам ещё сложно объединить три кода и добавить требования из условия задачи.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include<climits> 
using namespace std;
 
int main()
{
    short int i=0, max1=SHRT_MIN, max2=SHRT_MIN, a;
 
    while (i<=215) 
        {
        cin >>a;
        if (a==0) break;
        if (a>=max1) {max2=max1;max1=a;}        
        else if (a>max2) max2=a;
        i++;
        }
    cout <<max2<<"\n";
system("pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2019, 16:48

Массив. Найти среди последовательности целых чисел максимум и минимум
1)Последовательность целых чисел вводится с клавиатуры до «нуля».Найдите среди них максимум и минимум и выведите на экран их сумму. ...

Найти наименьшее из чисел первой последовательности, которые не принадлежат второй
Две последовательности содержат действительные элементы. Найти наименьшее из этих чисел первой последовательности, которые не принадлежат...

Найти наибольшее среди тех чисел второй последовательности, которые не входят в первую
Даны две последовательности по 30 чисел в каждой. Найти наибольшее среди тех чисел второй последовательности, которые не входят в первую...

Найти количество четных чисел первой последовательности и количество нечетных чисел второй
Даны две последовательности целых чисел a1, a2...a8 и b1, b2..b8. Найти количество четных чисел первой последовательности и количество...

Найти множество чисел, которые лишь раз встречаются в первой последовательности и отсутствуют во второй
Привет всем. Помогите пожалуйста решить задачу с использованием множественный тип данных. Заданы две непустые последовательности целых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru