Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
 Аватар для Fa4stik
7 / 7 / 1
Регистрация: 04.04.2020
Сообщений: 262

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

21.10.2020, 15:31. Показов 3249. Ответов 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,614
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,614
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,614
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 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
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,614
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 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru