Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
функция которая вычисляет минимум из трёх чисел
#21
Lihoy;343838 Написал:Таким образом, если b < c, то m = b, иначе m = c, независимо от всех предыдущих операторов if.

Даже, если а минимальное, то твой вариант будет выбирать итоговый результат только между b и с.
То есть, необходимо написать после каждой проверки if - else? Либо вообще не использовать else?
Ответ
#22
desolator Написал:То есть, необходимо написать после каждой проверки if - else? Либо вообще не использовать else?

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

Простейший - использование условного оператора совместно с логическими.

[SRC="java"]
if (a < b && a < c)
m = a;
else if (b < a && b < c)
m = b;
else
m = c;
[/SRC]

Updated.
К слову, можно даже немного упростить.

[SRC="java"]
if (a < b && a < c)
m = a;
else if (b < c)
m = b;
else
m = c;
[/SRC]

Если в первом if'e результат false, значит а - не минимальное, следовательно дальнейшее сравнение с ним не имеет смысла.
Ответ
#23
desolator Написал:http://javarush.ru/course.html не знаю какая магия там происходит но как то судит, в моем случае вердикт - ответ не верен.

public static int min(int a, int b, int c, int d)
{
int m4=0;
if (a<b)
m4=a;
else
{
m4=b;
}

if (m4>c)
m4=c;

if (m4>d)
m4=d;


return m4;
}
Ответ
#24
[SRC="java"] public static int min(int a, int b, int c, int d)
{
if(a == b && a == c && a == d)
return 0;

int min = a < b ? a : b;

min = min < c ? min : c;
min = min < d ? min : d;

return min;
}[/SRC]
Ответ
#25
А не легче ли создать метод вычисления минимального и максимального числа в массиве?
можно обрабатывать сколько угодно чисел и всегда получим верный ответ.

[SRC="java"]
public class ZGMinMaxTest
{
public static void main(String[] args)
{
final int[] numbers = new int[] { 19, 52, 36, 74, 524, 16, 57, 238, 924 };

int minimal = Integer.MAX_VALUE;
int maximal = Integer.MIN_VALUE;
for(int number = 0; number < numbers.length; ++number)
{
int current = numbers[number];
if(current < minimal)
minimal = current;
else if(current > maximal)
maximal = current;
}

System.out.println("Minimal is -> " + minimal);
System.out.println("Maximal is -> " + maximal);
}
}
[/SRC]
[SRC="html"]
Result:
Minimal is -> 16
Maximal is -> 924
[/SRC]

или используйте класс математики

[SRC="java"]
public class ZGMathTest
{
public static void main(String[] args)
{
final int[] numbers = new int[] { 19, 52, 36, 74, 524, 16, 57, 238, 924 };

int minimal = Integer.MAX_VALUE;
int maximal = Integer.MIN_VALUE;
for(int number = 0; number < numbers.length; ++number)
{
int current = numbers[number];
minimal = Math.min(minimal, current);
maximal = Math.max(maximal, current);
}

System.out.println("Minimal is -> " + minimal);
System.out.println("Maximal is -> " + maximal);
}
}
[/SRC]
[SRC="html"]
Result:
Minimal is -> 16
Maximal is -> 924
[/SRC]
Ответ
#26
А нахрена цикл? Загружаем все числа в список и вычисляем с помощью встроенной команды, ну на шарпе это точно можно сделать, на яве скорее всего тоже.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#27
Zubastic Написал:А нахрена цикл? Загружаем все числа в список и вычисляем с помощью встроенной команды, ну на шарпе это точно можно сделать, на яве скорее всего тоже.
Можно и коллекцию использовать, без разницы на самом деле, я к тому что те примеры что писали до этого являются ограниченными по функционалу .
[SRC="java"]
import java.util.ArrayList;
import java.util.List;

public class ZGCollectionMathTest
{
public static void main(String[] args)
{
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(45);
numbers.add(312);
numbers.add(4);
numbers.add(456);
numbers.add(987);
numbers.add(24);

int minimal = Integer.MAX_VALUE;
int maximal = Integer.MIN_VALUE;
for(int number : numbers)
{
minimal = Math.min(minimal, number);
maximal = Math.max(maximal, number);
}

System.out.println("Minimal is -> " + minimal);
System.out.println("Maximal is -> " + maximal);
}
}
[/SRC]
[SRC="html"]
Result:
Minimal is -> 4
Maximal is -> 987
[/SRC]

или отсортировать коллекцию компаратором и получить минимальный и максимальный параметр
[SRC="java"]
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class ZGCollectionComparatorTest
{
public static void main(String[] args)
{
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(45);
numbers.add(312);
numbers.add(4);
numbers.add(456);
numbers.add(987);
numbers.add(24);

Integer[] sorted = numbers.toArray(new Integer[numbers.size()]);;
Arrays.sort(sorted, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2)
{
return (int) (o2 - o1);
}
});

System.out.println("Minimal is -> " + sorted[sorted.length - 1]);
System.out.println("Maximal is -> " + sorted[0]);
}
}
[/SRC]
[SRC="html"]
Result:
Minimal is -> 4
Maximal is -> 987
[/SRC]
Использовать можно как угодно Confusedtudent:
Ответ
#28
L2CCCP Написал:[SRC="java"]
for(int number : numbers)
{
minimal = Math.min(minimal, number);
maximal = Math.max(maximal, number);
}
[/SRC]
Я вот про это.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#29
Zubastic Написал:Я вот про это.
я уже увидел Smile
не успел отредактить
upd:
или отсортировать коллекцию компаратором и получить минимальный и максимальный параметр

[SRC="java"]
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class ZGCollectionComparatorTest
{
public static void main(String[] args)
{
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(45);
numbers.add(312);
numbers.add(4);
numbers.add(456);
numbers.add(987);
numbers.add(24);

Integer[] sorted = numbers.toArray(new Integer[numbers.size()]);;
Arrays.sort(sorted, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2)
{
return (int) (o2 - o1);
}
});

System.out.println("Minimal is -> " + sorted[sorted.length - 1]);
System.out.println("Maximal is -> " + sorted[0]);
}
}
[/SRC]
[SRC="html"]
Result:
Minimal is -> 4
Maximal is -> 987
[/SRC]
Ответ
#30
va_list inside

Код:
public int max(int...n) {
  int result = Integer.MIN_VALUE;
  for(int i : n) result = Math.max(result, i);
  return result;
}

OFMG. Зачем вам коллекции тут? Коллекции, сортировки... Наркоманы? :eb:
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Функция рандом vitlav 5 4,548 01-17-2011, 12:18 PM
Последний пост: MROBAR

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)