Задача по алгоритмам Ӏ Java Syntax: 5 уровень, 12 лекция

  • 8
  • Недоступна
Все классические алгоритмы уже давным-давно запрограммированы. Тем не менее, задачки на алгоритмы — очень ценны. Хотя бы тем, что, развивают мышление программиста. В алгоритме поиска максимума ничего сложного и нет. Так что не медлим: пишем программу, в которой задаем положительное целое число n, затем вводим n чисел и находим максимальное среди них.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (630)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Артур
Уровень 6, Алматы
9 октября, 07:42
5 пункт не проходит валидацию. Что я делаю не так?
Druha
Уровень 28
10 октября, 00:05
Попробуй ввести например три следующих числа: -55, -100, -5 Какое из этих чисел выведет твой алгоритм? P.S. для этой задачи рекомендую посмотреть что такое Константа Integer.MIN_VALUE
Булат
Уровень 9, Набережные Челны, Россия
6 октября, 15:13
Потратил час на 10 строк кода 👍
Борис
Уровень 9
26 сентября, 15:07
Сделал через определение максимума в массиве. Кто пойдёт по этому пути, не забудьте после объявления N, сразу условие >0, далее код. Спасибо
Иван
Уровень 8, Новосибирск
4 сентября, 09:33
Проблема была в целом с пониманием задачи. Решение для отрицательных чисел помог ответ Эд result=Integer.MIN_VALUE
Admin QA Engineer
17 августа, 18:51
Делал без читов в виде массивов, только несколько if и цикл. 1) Считал первое число и через if сверил с условием что число больше 0. 2) Через if с условием, что первое введенное число больше 0, считываю второе число, которое беру за максимальное. 3) Создаю цикл for с условием, что цикл крутится, пока счетчик меньше первого введенного числа за вычетом пробега по циклу. 4) В цикле сравниваю третье введенное число с максимальным. П.С. первое введенное число равно количеству чисел которые будем вводить. Пример: если первое число 3, то будем вводить три числа и сравнивать их между собой.
Александр
Уровень 7, Москва
7 октября, 08:37
Если выполнять проверку N>0 не сразу после его ввода, то программа может работать корректно, но задание не засчитается, как выполненное
null
Уровень 33, Москва
25 июня, 22:08
Доброго времени суток! хотелось бы понять, почему задание не засчитывается? Код соответствует всем условиям, но не засчитывает последние два пункта, хотя все ок. Если ввести число <0, то вывода на экран не будет, а если среди шести введенных чисел нет нуля, то спокойно выводит максимальное число, даже если их больше одного
public class Solution {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int[] a = new int[6];
        a[0] = sc.nextInt(); a[1] = sc.nextInt(); a[2] = sc.nextInt(); a[3] = sc.nextInt(); a[4] = sc.nextInt(); a[5] = sc.nextInt();
        int b = Arrays.stream(a).max().orElse(0);
        if(a[0] > 0 && a[1] > 0 && a[2] > 0 && a[3] > 0 && a[4] > 0 && a[5] > 0){
            System.out.println(b);
        }
    }
}
Виктор Наумович
Уровень 9, Минск, Беларусь
26 июня, 20:43
7 строка. После брэйка программа выходит из цикла и переходит сразу к 9 строке. То есть при условии, когда введено число <= 0, программа выведет в консоль максимальное число из массива, который предшествовал этому числу. Одним словом, нужно не выйти из цикла, а полностью закончить программу. System.exit(0);
Игорь
Уровень 35, Тверь
28 июля, 07:54
А почему вы определяете массив именно из 6 чисел, разве это есть в условии?
Marsian
Уровень 6, Россия
21 июня, 08:24
14 попыток блин, "рука/лицо". Сначала протупил с первым пунктом. Утром понял в чем подлянка. Дальше ошибка с отрицательным числом (5-е требование не валидировалось), ставил условие > 0 и никак. Проблема была с присвоением нулевого значения maximum. Спасибо Marat Minnigaliev, разбор его кода показал мою ошибку. Всего одна цифра, а нервов и падения ЧСВ .... Эххх
Дмитрий
Уровень 8, Санкт-Петербург
8 июня, 04:58
А я нашёл баг в компиляторе :) int maximum; int n = Integer.parseInt(reader.readLine()); if(n > 0) { int value; for(int m = n; m > 0; m--) { value = Integer.parseInt(reader.readLine()); if(m == n) { maximum = value; } else { if(value > maximum) { maximum = value; } } } System.out.println(maximum); } Вот в этом месте if(value > maximum) компилятор выдает ошибку, что переменная maximum не может быть проинициализирована. Но такого не может быть, потому что мы попадаем в это место только если n > 0. А дальше переменная maximum инициализируется в первой итерации цикла for, т.е. вот здесь if(m == n) { maximum = value; } Может кто подскажет почему?
8 июня, 16:18
Потому что компилятор настолько глубоко не анализирует код. Там анализ попроще, на уровне: в ветке if есть инициализация переменной maximum, значит все ок. А в ветке else инициализации нет, а значит и обращаться к ней не имеем права.
Игорь
Уровень 35, Тверь
28 июля, 08:00
int maximum = 0; можно сразу так сделать. хотя не, так не работает с отрицательными.
Andrei Leushin
Уровень 16, Пинск, Беларусь
7 июня, 12:26
все кто в первый раз решает эту задачу, не лезьте в массивы, научитесь делать через операторы for и if
Gonsalez
Уровень 7
6 июня, 13:14
Поначалу неправильно понял условие, думал, что все введенные числа должны быть больше 0, и только спустя полдня оказалось, что только число N должно быть больше 0. Но остался неясен один момент, почему, если сделать так, то задача проходит проверку
int N = Integer.parseInt(reader.readLine());
if (N <= 0) {
            return;
        }
А если так, то последнее условие не проходит проверку:
int N = Integer.parseInt(reader.readLine());
int maximum = Integer.parseInt(reader.readLine());

        if (N <= 0) {
            return;
        }
Почему? В IDEA по крайней мере, если вводишь сначала 0, а потом, например, 2, то программа завершалась и в консоль ничего не выводилось
Игорь
Уровень 35, Тверь
28 июля, 08:16
убери это int maximum = Integer.parseInt(reader.readLine()); за if