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

Я хочу взять три из них и использовать Math.max() найти максимум из трех, но если я перехожу в более двух значений, то это дает мне ошибку. Например:

// this gives me an error double maxOfNums = Math.max(MY_INT1, MY_INT2, MY_DOUBLE2);

пожалуйста, дайте мне знать, что я делаю неправильно.

автор: Nateowami

10 ответов

Math.max принимает только два аргумента. Если вы хотите максимум три, используйте Math.max(MY_INT1, Math.max(MY_INT2, MY_DOUBLE2)) .

автор: Jeremiah Willcock

Если возможно, используйте NumberUtils в Apache Commons Lang-там много отличных утилит.

NumberUtils.max(int[])
автор: eugene

вы можете использовать это:

Collections.max(Arrays.asList(1,2,3,4));

или создать функцию

public static int max(Integer. vals)
автор: shifu

не используя сторонние библиотеки, вызывая один и тот же метод более одного раза или создавая массив, вы можете найти максимум произвольного числа двойников, таких как so

public static double max(double. n) < int i = 0; double max = n[i]; while (++i < n.length) if (n[i] >max) max = n[i]; return max; >

в вашем примере max может использоваться следующим образом

Задание 17 // ЕГЭ по информатике 2022


final static int MY_INT1 = 25; final static int MY_INT2 = -10; final static double MY_DOUBLE1 = 15.5; public static void main(String[] args)
автор: cdwb

Math.max принимает только два аргумента, не больше и не меньше.

другое другое решение для уже опубликованных ответов будет использовать DoubleStream.of :

double max = DoubleStream.of(firstValue, secondValue, thirdValue) .max() .getAsDouble();
автор: Aomine

путь Java 8. Для нескольких параметров:

Stream.of(first, second, third).max(Integer::compareTo).get()
автор: Den Roman

у меня есть очень простая идея:

int smallest = Math.min(a, Math.min(b, Math.min(c, d)));

конечно, если у вас есть 1000 numbers , это непригодно, но если у вас есть 3 или 4 цифры, его легко и быстро.

Читайте также:
Программа как сесть на шпагат

С уважением, Норберт!—5—>

автор: user5430588

Как упоминалось ранее, математике.Макс() принимает только два аргумента. Он не совсем совместим с вашим текущим синтаксисом, но вы можете попробовать коллекции.макс.)(

Если вам не нравится, что вы всегда можете создать свой собственный метод для этого.

public class test < final static int MY_INT1 = 25; final static int MY_INT2 = -10; final static double MY_DOUBLE1 = 15.5; public static void main(String args[]) < double maxOfNums = multiMax(MY_INT1, MY_INT2, MY_DOUBLE1); >public static Object multiMax(Object. values) < Object returnValue = null; for (Object value : values) returnValue = (returnValue != null) ? ((((value instanceof Integer) ? (Integer) value : (value instanceof Double) ? (Double) value : (Float) value) >((returnValue instanceof Integer) ? (Integer) returnValue : (returnValue instanceof Double) ? (Double) returnValue : (Float) returnValue)) ? value : returnValue) : value; return returnValue; > >

Это займет любое количество смешанных числовых аргументов (Integer, Double и Float), но возвращаемое значение является объектом, поэтому вам придется привести его к Integer, Double или Float.

ГРОБЫ № 25 на количество делителей | #29 Новые задачи с сайта Полякова № 5762-5766

Он также может бросать ошибка, так как нет такой вещи, как «MY_DOUBLE2».

автор: Samuel Willems

int first = 3; int mid = 4; int last = 6; //checks for the largest number using the Math.max(a,b) method //for the second argument (b) you just use the same method to check which //value is greater between the second and the third int largest = Math.max(first, Math.max(last, mid));
автор: kirshiyin

Если вы хотите сделать простой, это будет так

// Fig. 6.3: MaximumFinder.java // Programmer-declared method maximum with three double parameters. import java.util.Scanner; public class MaximumFinder < // obtain three floating-point values and locate the maximum value public static void main(String[] args) < // create Scanner for input from command window Scanner input = new Scanner(System.in); // prompt for and input three floating-point values System.out.print( «Enter three floating-point values separated by spaces: «); double number1 = input.nextDouble(); // read first double double number2 = input.nextDouble(); // read second double double number3 = input.nextDouble(); // read third double // determine the maximum value double result = maximum(number1, number2, number3); // display maximum value System.out.println(«Maximum is: » + result); >// returns the maximum of its three double parameters public static double maximum(double x, double y, double z) < double maximumValue = x; // assume x is the largest to start // determine whether y is greater than maximumValue if (y >maximumValue) maximumValue = y; // determine whether z is greater than maximumValue if (z > maximumValue) maximumValue = z; return maximumValue; > > // end class MaximumFinder

Читайте также:
К каким программам относится эксель

и выход будет чем-то вроде этого

Enter three floating-point values separated by spaces: 9.35 2.74 5.1 Maximum is: 9.35

Источник: askdev.ru

Так ли очевидна основная теорема арифметики? И всегда ли она верна?.

Каждое натуральное число раскладывается в произведение простых множителей, и притом однозначно с точностью до их перестановки. Это известное со школы и, казалось бы, очевидное утверждение гордо называется основной теоремой арифметики. В стандартной школьной программе она не доказывается — даётся только алгоритм разложения на простые (ищем наименьший простой делитель числа, делим на него, с частным проделываем ту же процедуру). Пример:

Таким образом можно разложить любое натуральное число. Однако встаёт вопрос о единственности. Что, если раскладывать на множители по-другому? Например,

После перестановки множителей получается то же разложение, что и выше, но будет ли так всегда? Многие не понимают, почему это не очевидно и надо доказывать. Лучший способ понять, что этот факт не очевиден, — показать примеры, когда он. неверен! Как это? Оказывается, существуют числовые (и не только) системы, в которых нет единственности разложения.

По-видимому, исторически первые примеры связаны с попытками доказать Великую проблему Ферма: уравнение неразрешимо в натуральных числах ни для какого натурального . Так, при Эйлер вышел в комплексную плоскость и обращался с числами , где , впоследствии названных эйлеровыми. Он молчаливо предполагал, что для них тоже верна основная теорема арифметики. Позже обнаружили, что это не так:

Можно показать, что это действительно два разных разложения на простые эйлеровы числа. Приведём более простые примеры, не требующие знания комплексных чисел. Прежде всего заметим, что говорить о делимости осмысленно в любых системах, где есть умножение. Ограничимся пока натуральными числами.

Подмножество назовём мультипликативной системой, если и для всех . Вот несколько примеров, помимо двух тривиальных — и :

Читайте также:
Что является средствами осуществления программы по развитию речи у детей

Пусть — мультипликативная система в и . Скажем, чтоделит() в , если . Число назовём простым в , если имеет ровно два делителя в , и (в частности, ).
Простое число в — это число со свойством: еслине делятся на, то не делится на .

Пример. В системе 8 не делится на 4, а потому и — простые числа. Отсюда получаем пример неоднозначного разложения на простые:

Задача 1. Докажите, что в системе разложение на простые тоже не однозначно.

Задача 2. Опишите простые числа в системе

чётных чисел с единицей. Исследуйте, однозначно ли разложение на простые в этой системе.

Итак, существуют мультипликативные системы, состоящие из натуральных чисел, в которых основная теорема арифметики неверна, точнее, нет единственности разложения на простые. Почему в натуральном ряду единственность всё же имеет место? Это вытекает из следующего важного свойства простых чисел.

Лемма. Если простоене делит числа , тоне делит и их произведение.
Выведем единственность из леммы. Предположим, что некоторое число имеет два разложения на простые:

Покажите, что программа не всегда верно определяет максимальное из трёх чисел, записанных в переменные a, b, c. если a> b то m: =a if a> b then m: =a; иначе m: =b всё else m: =b; если c> b то m: =c if c> b then m: =c иначе m: =b всё else m: =b; контрпример т. е. значения переменных при котором в переменной м будет получен неверный ответ. как нужно доработать программу чтобы она всегда работала правильно?

Не будет работать если у переменной «а» будет максимальное значение если a> b то m: =a if a> b then m: =a; иначе m: =b всё else m: =b; если c> b то m: =c if c> b then m: =c иначе m: =b всё else m: =b; если a> c то m: =a if a> c then m: =a иначе m: =c всё else m: =c;

Ответ разместил: Гость

for i: =1 to 1000 do

if i mod 2=0 then s: =s+i;

for i: =1 to 1000 do

if odd(i) then s: =s+i;

a: array[1..500] of integer;

for i: =1 to 1000 do

if odd(i) then a[i]: =i;

Источник: evoprotvet.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru