Другие языки программирования и технологии

Предложите алгоритм нахождения количества максимальных чисел из трех введенных чисел.

получаем a,b,c
если a>(b || c) тогда a - максимальное
иначе если b>(a || c) то гда b - максимальное
иначе c - максимальное
СР
Сергей Рожков
71 282
Лучший ответ
Алгоритм это логика, поэтому слушай только логику.

Короче: Алгоритм нахождения максимально большого по счёту числа из трёх введёных.

x1 = 0;
x2 = 0;
x3 = 0;

далее вбиваем числа в переменные (или вместо нулей сам придумай числа)

Создаём три переменные, по умолчанию они равны нулю (нулю, что-бы ошибки небыло если ты не введёшь какое-нибудь число и оно не окажеться пустым, а мы с пустотой сравниваем) или как я предложил выше.

Решение: условие: если второе число больше третьего и меньше первого, то самое большое это первое число (то бишь x1) значит на экран нужно вывести x1 (а он выведет её содержимое, то есть самое большое число) .
Иначе: если третие число, больше первого, но меньше второго то выводим второе число (то есть x2).
Иначе другое условие (иногда это пишется else if) если первое число больше второго, но меньше третьего, то выводим третие число (x3).

Вот-с, таков будет алгоритм для трёх чисел, для больших чисел больше заморочки или придумывай другую логику. У программы может возникнуть ошибка если ты введёшь не 5, а например минус 5.

Ну вот-с
max( a, max( b, c ) )
Или заводим массив и пробегаемся по нему циклом.
Все такие невнимательные:
Требовалось найти КОЛИЧЕСТВО максимальных чисел, а не ЗНАЧЕНИЕ этого максимума.

По понятным причинам максимумов в массиве из N элементов может быть 1…N (последний случай когда все равны)
Ваш "переделанный" алгоритм не отслеживает 2 максимума, то есть должен фейлиться на последовательности 2, 1, 2.

Для массива проще всего считать максимумы в процессе его нахождения, то есть при последовательном переборе со сравнением с кандидатом на максимум. Просто при превышении максимума нужно одновременно с заменой кандидата обнулять счётчик (точнее - присвоить 1), а при равенстве элемента и кандидата - инкрементировать.

Для 3х элементов как-то так:
max = a; cnt = 1;
if (b > max) max = b; else if (b == max) cnt++;
if (c > max) {max = c; cnt = 1;} else if (c == max) cnt++;
Киселев Леонид
Киселев Леонид
11 112
ты сейчас вообще про что?
Abdullo Mavloni
Abdullo Mavloni
4 955
Выше, или так

получаем a,b,c

определяем max как результат

считаем, что a - максимальное (max := a)
если b > max, тогда max := b
если с > max, тогда max := c

теперь max - максимальное.
Андрей Чмелёв
Андрей Чмелёв
3 437

Похожие вопросы