Как найти максимальное из трех чисел?
в программе должно сравниваться три значения, и большее из них должно присваиваться к четвертому значению. Выглядят ifы примерно так:
if (m1 > m2) < m1 = Mmax; >else < m2 = Mmax; >if (m2 > m3) < m2 = Mmax; >else < m3 = Mmax; >if (m3 > m1) < m3 = Mmax; >else
Отслеживать
48.4k 5 5 золотых знаков 22 22 серебряных знака 57 57 бронзовых знаков
задан 22 мая 2021 в 20:46
Nevazhno Valera Nevazhno Valera
3 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если я правильно понял вопрос, и надо найти наибольшее из трех, то всё проще, чем кажется
max = a; if (b > a) max = b; if (c > max) max = c;
Или с использованием тернарного оператора
max = b > a ? b : a; max = max > c ? max : c;
Или с помощью System.Math
max = Math.Max(a, Math.Max(b, c));
Или с помощью System.Linq
max = new[] < a, b, c >.Max();
Отслеживать
ответ дан 22 мая 2021 в 20:57
48.4k 5 5 золотых знаков 22 22 серебряных знака 57 57 бронзовых знаков
а почему во втором if («max = a; if (b > a) max = b; if (c > max) max = c;») сравнивается с именно с max?
22 мая 2021 в 21:04
@NevazhnoValera а с чем еще сравнивать? Если найдено наибольшее из двух первых, то сравнивать надо третьте с ним. Можно конечно через 3 комбинированных условия решать типа if (a > b && b > c) max = a; и так далее, но зачем? 🙂
22 мая 2021 в 21:11
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Найти максимальное число из трех
Определить какое из трех введенных пользователем чисел максимальное и вывести его на экран.
Пример выполнения программы
Введите три числа: 23 54 14 Максимальное из них: 54
Решение задачи на языке Паскаль
var n1, n2, n3, max: integer; begin write('Введите три числа: '); readln(n1, n2, n3); if n1 > n2 then max := n1 else max := n2; if n3 > max then max := n3; writeln('Максимальное из них: ', max); end.
Пусть числа, которые вводит пользователь, присваиваются переменным n1 , n2 , n3 . Введем четвертую переменную max , в которую по ходу выполнения кода будет помещено найденное максимальное значение. Тогда алгоритм решения задачи можно свести к следующему:
- Сравнить первое и второе число ( n1 и n2 ). Переменной max присвоить значение переменной, содержащей большее значение.
- Сравнить значение переменной max с третьим числом ( n3 ). Если значение n3 окажется больше, чем max , то присвоить max значение третьего числа. Если же значение max окажется больше, то ничего не делать.
Другой способ решения задачи — сразу предположить, что первая переменная содержит максимальное число, и присвоить его переменной max . Далее, сравнивая значение max со значениями двух других переменных, будем менять max только в том случае, если второе или третье числа больше того значения, которое содержится в max .
var n1, n2, n3, max: integer; begin write('Введите три числа: '); readln(n1, n2, n3); max := n1; if n2 > max then max := n2; if n3 > max then max := n3; writeln('Максимальное из них: ', max); end.
Л2Ш_июнь
Поиск максимального значения в массиве и его номера
Ранее мы проводили поиск наибольшей и наименьшей цифры натурального числа. Все, что рассматривали, применимо к массиву.
Заведем переменную, в которой будем хранить максимальное значение.
В качестве начального значения присвоим этой переменной значение a[0].
Будем просматривать элементы массива по порядку и сравнивать с максимальным и, если значение какого-то элемента будет больше максимального, запомним это значение.
Задача 1. Дан массив целых чисел А, размер массива n не превосходит 100. Найти и вывести максимальное значение элементов массива.
#include int main() < int n, a[100], i, max; // max - в этой переменной будем хранить максимальное значение scanf("%d", &n); //вводим количество элементов for(i = 0 ; i < n ; i++) scanf("%d", &a[i]); //заполняем массив с клавиатуры поэлементно max = a[0]; //начальное значение переменной for(i = 1 ; i < n ; ++i) //просматриваем по порядку элементы массива (с 1-го, т.к. 0-й уже взяли) < if (a[i] >max) < max = a[i]; //нашли большее значение, меняем максимальное >> printf("%d", max); //печатаем результат поиска return 0; >
Дальше будем рассматривать только фрагмент программы с поиском максимального значения.
Всегда ли можно взять значение первого элемента в качестве начального?
А если есть дополнительные условия, например, максимальное должно быть четным? Или отрицательным?
Задача 2.Дан массив целых чисел А, размер массива n не превосходит 100. Найти и вывести максимальное четное значение в массиве или 1, если таких элементов нет.
max = INT_MIN; //начальное значение максимального for(i = 0 ; i < n ; ++i) //просматриваем по порядку элементы массива (с 0-го) < if (a[i] % 2 == 0) //значение элемента четное < if (a[i] >max) //нашли большее значение < max = a[i]; //меняем максимальное >> if (max == INT_MIN) printf("1"); else printf("%d", max);
Задача 3. Дан массив целых чисел А, размер массива n не превосходит 100. Найти и вывести номер максимального значения, если таких несколько — первого встретившегося.
Вернемся к поиску максимального значения без дополнительных условий. Заведем еще одну переменную для хранения номера максимального элемента. Каждый раз, когда мы будем изменять максимальное значение, будет меняться и номер максимального значения.
int max = a[0]; //начальное значение максиммального int nummax = 0; //номер максимального значения for(i = 1 ; i < n ; ++i) //просматриваем по порядку элементы массива (с 1-го, т.к. 0-й уже взяли) < if (a[i] >max) < max = a[i]; //нашли большее значение, меняем максимальное nummax = i; //запоминаем его номер >> printf("%d", nummax);
Можно ли обойтись меньшим количеством переменных?
Можно. По номеру элемента всегда можно узнать его значение.
int nummax = 0; //номер максимального значения for(i = 1 ; i < n ; ++i) < if (a[i] >a[nummax]) < nummax = i; //запоминаем номер нового максимального >> printf("%d", nummax);
*В некоторых задачах нумерация элементов идет с единицы.
Просто корректируйте вывод, например, выводите (найденное_значение + 1).
Как найти максимальное число в массиве java
В Java 8 и выше можно использовать потоки streams для нахождения максимального числа в массиве. Для этого можно использовать метод max() класса java.util.stream.IntStream , который возвращает максимальное значение в потоке.
int[] numbers = 10, 20, 30, 40, 50>; int max = Arrays.stream(numbers).max().getAsInt(); System.out.println("Максимальное число: " + max);
Здесь мы создаем поток из массива numbers с помощью метода Arrays.stream() , а затем вызываем метод max() для нахождения максимального значения. Метод max() вернет объект OptionalInt , поэтому мы вызываем метод getAsInt() для получения примитивного значения int
05 апреля 2023
Чтобы найти максимальное число в массиве, можно использовать цикл для прохода по всем элементам и сравнения каждого элемента с текущим максимальным значением. Начальное значение максимального элемента можно установить как первый элемент массива, а затем в цикле сравнивать оставшиеся элементы с текущим максимальным значением и обновлять максимальный элемент, если текущий элемент больше. Вот как можно реализовать эту логику:
public static int findMax(int[] arr) int max = arr[0]; // начальное значение максимального элемента for (int i = 1; i arr.length; i++) if (arr[i] > max) max = arr[i]; > > return max; >
Этот метод принимает в качестве аргумента массив arr и возвращает максимальный элемент в массиве. Вы можете вызвать этот метод и передать ему ваш массив для нахождения максимального значения.