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

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

08.01.2019, 20:34. Показов 28231. Ответов 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
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
09.01.2019, 16:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Yetty Посмотреть сообщение
ReDoX, не путайте ТС. второй максимум для 33 32 33 это число 33

Не по теме:

да, я ничего не понял(

0
60 / 45 / 15
Регистрация: 06.03.2018
Сообщений: 202
09.01.2019, 16:49
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;
 
void main()
{
    short int max1 = -32768, max2 = -32768, cnt = 0, value = -32768;
    while (++cnt<32768)
    {
        cin >> value;
        if (!value)
            break;
        if (value > max1)
        {
            max2 = max1;
            max1 = value;
        }
        else
            if (value > max2)
                max2 = value;
        
    }
 
    cout << "-----------------" << endl << "max2= " << max2<<endl;
    
    system("pause");
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 16:58
galeks1, почти как мой вариант. если бы не разница в минуту закрались бы смутные сомнения .
всё же цикл должен быть до 215 по условию задачи
0
60 / 45 / 15
Регистрация: 06.03.2018
Сообщений: 202
09.01.2019, 17:07
да 215...
что то я дал маху.

не внимательность ...
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;
 
void main()
{
    short int max1 = -32768, max2 = -32768, cnt = 0, value = -32768;
    while (++cnt<215)
    {
        cin >> value;
        if (!value)
            break;
        if (value > max1)
        {
            max2 = max1;
            max1 = value;
        }
        else
            if (value > max2)
                max2 = value;
        
    }
 
    cout << "-----------------" << endl << "max2= " << max2<<endl;
    
    system("pause");
}
Добавлено через 6 минут
В вашем случае теперь цикл равен 216 однако...
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
09.01.2019, 17:10
Yetty, в последнем кинутом я решал вашу задачу

че-то все напутал

Цитата Сообщение от Yetty Посмотреть сообщение
ReDoX, понятно. интереснее найти решение такой задачи: найти наиболее близкое к максимуму число, отличное от максимума. как раз последний код Skyer вроде это и делает, ещё не проверял.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 17:11
Цитата Сообщение от galeks1 Посмотреть сообщение
В вашем случае теперь цикл равен 216 однако...
не совсем Вас понял, в моём коде что-то неправильно ?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.01.2019, 17:34
Зачем инициализировать минимумами? Гарантируется же, что в последовательности как минимум 2 числа. Ими и нужно инициализировать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int n, max1, max2;
 
std::cin >> max1 >> max2;
 
if ( max2 > max1 ) {
   n = max1;
   max1 = max2;
   max2 = n;
}
 
while ( std::cin >> n ) {
   if ( n > max1 ) {
      max2 = max1;
      max1 = n;
   } else if ( n > max2 ) {
      max2 = n;
   }
}
 
std::cout << max2 << std::endl;
Правда не понятно с нулем, он используется для завершения ввода последовательности и получается не считается за элемент этой самой последовательности? Если так, то можно использовать такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int n, max1, max2;
 
std::cin >> max1 >> max2 >> n;
 
if ( max2 > max1 ) {
   int tmp = max1;
   max1 = max2;
   max2 = tmp;
}
 
while ( n != 0 ) {
   if ( n > max1 ) {
      max2 = max1;
      max1 = n;
   } else if ( n > max2 ) {
      max2 = n;
   }
 
   std::cin >> n;
}
 
std::cout << max2 << std::endl;
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 17:45
Цитата Сообщение от Toshkarik Посмотреть сообщение
Зачем инициализировать минимумами?
не замечаете что Ваш вариант более громоздкий ? (2 cin, дополнительный swap)
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.01.2019, 17:49
Цитата Сообщение от Yetty Посмотреть сообщение
не замечаете что Ваш вариант более громоздкий ? (2 cin, дополнительный swap)
Нет, не замечаю.

Цитата Сообщение от Yetty Посмотреть сообщение
всё же цикл должен быть до 215 по условию задачи
Нет, по условию сказано, что их не больше 215. Их не должно быть ровно 215. Такие условия как раз добавляются для гибкости решений. В данном случае можно легко создать статический массив размером 215, так как мы уверены, что чисел будет не больше. После чего отсортировать его.
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 42
09.01.2019, 17:50  [ТС]
Спасибо большое! Но всё равно частичное решение..
В общем, в субботу будет урок, скорее всего разберём задачу и я тут скину решение.
А так, остальные задачи я решила, оценка уже 5.
Всем большое спасибо за всё, извините, что заставила мучиться)
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.01.2019, 17:52
Цитата Сообщение от Toshkarik Посмотреть сообщение
Правда не понятно с нулем, он используется для завершения ввода последовательности и получается не считается за элемент этой самой последовательности?
Не заметил жирным шрифтом именно это

Добавлено через 58 секунд
Цитата Сообщение от HateLov Посмотреть сообщение
Но всё равно частичное решение
А почему частичное? Все ваши примеры тестов вроде проходит.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 17:56
Цитата Сообщение от Toshkarik Посмотреть сообщение
Нет, не замечаю.
что n у Вас не инициализирована тоже не замечаете ?
Цитата Сообщение от Toshkarik Посмотреть сообщение
Нет, по условию сказано, что их не больше 215. Их не должно быть ровно 215.
А кто утверждал обратное ? Это максимальное количество - 215 + ввод нуля, а выход идёт по break при вводе нуля.

Добавлено через 1 минуту
Цитата Сообщение от HateLov Посмотреть сообщение
Спасибо большое! Но всё равно частичное решение..
HateLov, мой вариант тестировали ?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.01.2019, 17:58
Цитата Сообщение от Yetty Посмотреть сообщение
что n у Вас не инициализирована тоже не замечаете ?
Это не правда же. Посмотрите еще раз в код.
Цитата Сообщение от Yetty Посмотреть сообщение
А кто утверждал обратное ? Это максимальное количество - 215 + ввод нуля, а выход идёт по break при вводе нуля.
Повторюсь, подобные условия сделаны для разнообразия решений. В данном случае не надо считать сколько введено элементов. Ведь гарантируется же, что их не больше 215, зачем их считать? Это глупо.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 18:00
del
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.01.2019, 18:01
Что же тогда делает строчка
C++
1
std::cin >> max1 >> max2 >> n;
?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 18:02
Toshkarik, не заметил, что Вы вводите n. это ещё зачем и как согласуется с условием задачи ?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.01.2019, 18:05
Yetty, ну давайте еще раз прочтем вместе условия. В последовательности минимум 2 элемента. Последовательность заканчивается нулем. Ноль не является элементом последовательности.

Из всего этого можно сделать вывод, что на входе будет минимум 3 числа. 2 элемента + ноль.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 18:08
Toshkarik, Вы не ответили на вопрос. что за значение n у Вас поступает на ввод ?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.01.2019, 18:10
Цитата Сообщение от Yetty Посмотреть сообщение
Toshkarik, Вы не ответили на вопрос. что за значение n у Вас поступает на ввод ?
Вы издеваетесь? Там или ноль или 3-ий элемент последовательности.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.01.2019, 18:14
Цитата Сообщение от Toshkarik Посмотреть сообщение
Вы издеваетесь?
вовсе нет.
Цитата Сообщение от Toshkarik Посмотреть сообщение
Там или ноль или 3-ий элемент последовательности.
просто получается что с Вашим рацпредложением уже не 1 cin как в моём варианте, а фактически уже 4.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2019, 18:14

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Особенности 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