Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262

Нахождение трёх наибольших

21.10.2020, 15:31. Показов 3269. Ответов 15

Студворк — интернет-сервис помощи студентам
Всем привет. Подскажите пожалуйста, верно ли работает программа. И второе, как мне при вводе задавать значения числам?
C#
1
int.MinValue // использовать нельзя
К примеру, при вводе первого числа, оно автоматом попадает в max1. Второе число которое я ввожу, оно может быть >max1, либо же <max1. Если второе число больше max1, то max2=max1, max1=a. Но я не понимаю, если меньше max1, как присвоить значение второго числа в max2. Массивом пользоваться нельзя
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int a = int.Parse(Console.ReadLine());
            int max1 = a;
            int max2 = int.MinValue;
            int max3 = int.MinValue;
            while (a!=0)
            {
                a = int.Parse(Console.ReadLine());
                if (a>max1)
                {
                    max3 = max2;
                    max2 = max1;
                    max1 = a;
                }
                if (a < max1 && a > max2 && a > max3) max2 = a;
                if (a < max1 && a < max2 && a > max3) max3 = a;
            }
            Console.WriteLine($"{max1}, {max2}, {max3}");
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2020, 15:31
Ответы с готовыми решениями:

Найти сумму двух наибольших из трех заданных чисел
Помогите решить задачу: даны три числа, найти сумму двух наибольших из них.

Напишите программу для нахождения произведения двух наибольших из трех веденных с клавиатуры чисел
Напишите программу для нахождения произведения двух наибольших из трех веденных с клавиатуры чисел И дайте пожалуйста объясения к...

Файлы: после каждого из первых трёх наибольших по модулю чисел вставить нулевой элемент
Дан файл целых чисел. Создать на его основе новый файл в котором после каждого из первых трёх наибольших по абсолютной величине чисел...

15
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
21.10.2020, 15:38
Цитата Сообщение от Fa4stik Посмотреть сообщение
Подскажите пожалуйста, верно ли работает программа
Было бы неплохо просто понять что должна программа делать
1
 Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262
21.10.2020, 15:40  [ТС]
Цитата Сообщение от Kyra90 Посмотреть сообщение
Было бы неплохо просто понять что должна программа делать
Нахождение 3-ёх наибольших чисел
0
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,622
21.10.2020, 15:40
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (a > max1)
{
     max3 = max2;
     max2 = max1;
     max1 = a;
}
else if (a > max2)
{
    max3 = max2;
    max2 = a;
}
else if (a > max3)
{
    max3 = a;
}
1
 Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262
21.10.2020, 15:47  [ТС]
escoult, спасибо, но какие значения необходимо присвоить max2, max3 при последующей работе? Если сразу присвоить всем a, то результат может оказаться a a a (т.к. оно может быть сразу максимальным)
0
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,622
21.10.2020, 16:10
Цитата Сообщение от Fa4stik Посмотреть сообщение
какие значения необходимо присвоить max2, max3 при последующей работе?
При начальной инициализации.
Зависит от того получение каких чисел вы ожидаете. int.MinValue или 0, если числа положительные. (у вас отмечено, что int.MinValue использовать нельзя. Почему? Условие задания?

Цитата Сообщение от Fa4stik Посмотреть сообщение
Если сразу присвоить всем a, то результат может оказаться a a a (т.к. оно может быть сразу максимальным)
Всем не присвоится, посмотрите код внимательно. Если а больше мах1, остальные условия не будут выполняться.
1
 Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262
21.10.2020, 16:19  [ТС]
Цитата Сообщение от escoult Посмотреть сообщение
у вас отмечено, что int.MinValue использовать нельзя. Почему? Условие задания?
Да, такое условие задания
Цитата Сообщение от escoult Посмотреть сообщение
Всем не присвоится, посмотрите код внимательно. Если а больше мах1, остальные условия не будут выполняться.
В вашей же программе ввожу значения: 4 3 2 1 0. Вывод: 4 4 4. Я вот про это и писал
Возможно ли как-то реализовать то, что я выше написал?
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
int a = int.Parse(Console.ReadLine());
            int max1 = a;
            int max2 = a;
            int max3 = a;
while (a != 0)
            {
                a = int.Parse(Console.ReadLine());
                if (a > max1)
                {
                    max3 = max2;
                    max2 = max1;
                    max1 = a;
                }
                else if (a > max2)
                {
                    max3 = max2;
                    max2 = a;
                }
                else if (a > max3)
                {
                    max3 = a;
                }
            }
            Console.WriteLine($"{max1}, {max2}, {max3}");
        }
0
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,622
21.10.2020, 16:54
Лучший ответ Сообщение было отмечено Fa4stik как решение

Решение

Цитата Сообщение от Fa4stik Посмотреть сообщение
Возможно ли как-то реализовать то, что я выше написал?
Откуда такие задания то берутся )).
Оопс, там еще и массивом пользоваться нельзя...
1
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
21.10.2020, 17:20
Fa4stik, На здоровье
C#
1
2
3
4
5
6
7
8
9
10
11
12
            int a = int.Parse(Console.ReadLine());
            int max1 = a*-10;
            int max2 = a*-10;
            int max3 = a*-10;
            while (a != 0)
            {
                if (a >= max1) max1 = a;
                else if ((a > max2)&&(a < max1)) max2 = a;
                else if ((a > max3)&&(a < max2)) max3 = a;
                a = int.Parse(Console.ReadLine());
            }
             Console.WriteLine($"{max1}, {max2}, {max3}");
1
 Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262
21.10.2020, 17:31  [ТС]
Kyra90, в условии написано, что вводятся целые числа
Вводим: -10, -20, -30, 0
Вывод: 100.
Вопрос: откуда взялось 100, если мы его даже не вводили
0
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
21.10.2020, 17:34
тогда делаем поправку))
1
 Аватар для Enifan
1849 / 1192 / 501
Регистрация: 14.10.2018
Сообщений: 3,225
21.10.2020, 17:42
Цитата Сообщение от Fa4stik Посмотреть сообщение
в условии написано
Что за условие? Или нам самим догадываться ?
2
 Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262
21.10.2020, 17:44  [ТС]
Цитата Сообщение от Enifan Посмотреть сообщение
Что за условие? Или нам самим догадываться ?
Дана непустая последовательность не нулевых целых чисел, за которой следует 0 (использовать через while)
Определить три наибольших числа среди них.
int.MinValue использовать нельзя
0
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
21.10.2020, 17:56
тогда делаем поправку))
Цитата Сообщение от Fa4stik Посмотреть сообщение
Вводим: -10, -20, -30, 0
Вывод: 100.
Вопрос: откуда взялось 100, если мы его даже не вводили
-10*(-10) = 100.
Я не расчитала на использование отрицательных чисел))

Проверяйте
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
    int a = int.Parse(Console.ReadLine());
            int x;
            if (a > 0) x = a*-10;
            else x = a * 10;
            int max1 = x;
            int max2 = x;
            int max3 = x;
            while (a != 0)
            {
                if (a >= max1)
                {
                    max3 = max2;
                    max2 = max1;
                    max1 = a;
                }
                else if ((a > max2) && (a < max1))
                {
                    max3 = max2;
                    max2 = a;
                }
                else if ((a > max3) && (a < max2)) max3 = a;
                a = int.Parse(Console.ReadLine());
            }
            Console.WriteLine($"{max1}, {max2}, {max3}");
1
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,622
21.10.2020, 19:00
Лучший ответ Сообщение было отмечено Fa4stik как решение

Решение

Цитата Сообщение от Fa4stik Посмотреть сообщение
Дана непустая последовательность не нулевых целых чисел, за которой следует 0
Тогда инициализируете ваши максимумы значением 0, а в цикле проверяете, если какой то из максимумов равен 0 - устанавливаете ему значение в любом случае.

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
            int max1, max2, max3;
            max1 = max2 = max3 = 0;
 
            int current;
            while ((current = int.Parse(Console.ReadLine())) != 0)
            {
                if (current > max1 || max1 == 0)
                {
                    max3 = max2;
                    max2 = max1;
                    max1 = current;
                }
                else if (current > max2 || max2 == 0)
                {
                    max3 = max2;
                    max2 = current;
                }
                else if (current > max3 || max3 == 0)
                {
                    max3 = current;
                }
            }
 
            Console.WriteLine($"Max: {max1},{max2},{max3}"); ;
1
 Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262
21.10.2020, 19:43  [ТС]
Цитата Сообщение от Kyra90 Посмотреть сообщение
Я не расчитала на использование отрицательных чисел))
Проверяйте
Классно всё, а без ввода доп. переменной обойтись получится?
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
int a = int.Parse(Console.ReadLine());
            int x;
            if (a > 0) a = a * -10;
            else a = a * 10;
            int max1 = a;
            int max2 = a;
            int max3 = a;
            while (a != 0)
            {
                if (a >= max1)
                {
                    max3 = max2;
                    max2 = max1;
                    max1 = a;
                }
                else if ((a > max2) && (a < max1))
                {
                    max3 = max2;
                    max2 = a;
                }
                else if ((a > max3) && (a < max2)) max3 = a;
                a = int.Parse(Console.ReadLine());
            }
            Console.WriteLine($"{max1}, {max2}, {max3}");
Ибо при такой программе я ввожу: -100, -90, -80, 0.
Вывод: -80, -90, -1000 (появляется доп. 0 к сотне)

Добавлено через 2 минуты
Цитата Сообщение от escoult Посмотреть сообщение
Тогда инициализируете ваши максимумы значением 0, а в цикле проверяете, если какой то из максимумов равен 0 - устанавливаете ему значение в любом случае.
Гениально! Спасибо, Вы просто лучший!!!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2020, 19:43
Помогаю со студенческими работами здесь

Нахождение суммы двух наибольших из трех различных чисел
Как это сделать?

Нахождение суммы трех наибольших чисел в наборе из 7 чисел
Помогите написать, программу нахождения суммы из трех наибольших чисел набора 7 чисел. Я вообще без понятия как это сделать(((

Как составить массив m x 2, где 1-й столбец составлен из сумм трёх наименьших, 2-й из суммы трёх наибольших элементов массива m x n
Дан двумерный массив (m x n ) составить двумерный массив размерности m x 2, где 1 -ы столбец составлен из сумм трёх наименьших элементов ,...

Найти сумму 2 наибольших из трех чисел
1) Даны 3 целых числа. Найти сумму 2 наибольших из них. 2)дана структура данных из 5 названий цветочных растений цветок -название ...

Нахождение двух наибольших элементов
Пользователь вводит с клавиатуры последовательность чисел. Программе необходимо найти и вывести на экран два наибольших из них. Пример:...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru