Ребят как решить это гавно? с объяснением всех этапов малю😭😭😭😭😭
hidden #2419907
41 уровень
help (только сверх разумы!)
Обсуждается
Комментарии (20)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ol-saz
17 сентября 2020, 16:47
Я тоже сразу не понял что надо считывать N количество чисел, уперся в то что чисел может быть сколько угодно и решал задачу через цикл while(true){}/ В итоге не выполняется предпоследнее условие. Оказывается в задаче мы должны вводить конкретное количество N чисел/
+1
НикитаExpert
17 сентября 2020, 15:09
Лучше бы конечно перечитать лекции, ну раз просишь.
1. Считать с консоили число N. Тут все просто BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)) создаем объект
типа BufferedReader и называем его reader. дальше объявляем переменную и тут же для краткости ее
проинициализируем к примеру
String m = reader.readLine();
в классе данного типа который мы создали есть методы
обращаемся к ним с помощью данной конструкции, (переменная.название метода) здесь это reader.readLine() данный метод
считывает строку с консоли, но сейчас у анс проблема потому что она типа String, а нам нужно число. Не проблема
с помощью простых манипуляций мы преобразуем ее в число типа int. делаем.
int N = Integer.parseInt(m);
все. подставляем условеи что число должно быть больше 0 b и все остальео пишем уже в теле этого условия. Четыре строчки у нас есть искомое число.
2.счытываем N чисел.
через цикл делаем так чтобы считывало столько чисел сколько нам надо. с помощью reader.readLine()
for (int i=1;i<=(N);i++)
в теле создаем переменную как мы делали раньше и называем к примеру number. теперь нам нужно начальное значение maximum после строки где мы объявлил
перменную N , создаем его int maximum = number; но можно и до N, главное до цикла. дальше нам надо сравнить числа, сравниваем сразу при объявлении.
if (maximum <= numbers) {
maximum = numbers;
а после цикла выводим нашу переменную mamimum.
+1
НикитаExpert
17 сентября 2020, 15:14
Внимание тут решение! но все вышеописанное здесь в коде. хотя некоторые моменты сокращены
0
ГоффMaster
17 сентября 2020, 18:45
К сожалентю, решение ПОЧТИ работающее. если все отрицательные будут, то выдаст неверный результат.
В качестве инициального значения для maximum надо брать первый элемент - нам же надо сравнить числа между собой, а не с нулём или ещё каким-нибудь значением.
0
НикитаExpert
17 сентября 2020, 18:50
Вы невнимательны. первое значение именно первый элемент. ноль я добавляю обычно, чтобы если что не выскакивала ошибка иницализации
0
ГоффMaster
17 сентября 2020, 22:02
Невнимательность, да. Ошибка не одна, а две - инициализация нулём и - при каждом проходе максимум будет принимать значение считанного элемента. Код совсем не рабочий
0
НикитаExpert
18 сентября 2020, 03:44
хм, да, с проходом вы оказалиь правы, исправил) а вот про инициализацию совсем не правы, если не проинициализировать переменную код не запустится, а каким числом инициализировать в данном случае совершенно без разницы.
0
ГоффMaster
18 сентября 2020, 06:01
Ну а если без разницы, почему тогда не сразу int max = Integer.parseInt(...); ?
0
НикитаExpert
18 сентября 2020, 07:09
в своем решении я так и делал, а чтобы сейчас человека не перегружать, сделал так.
+1
ГоффMaster
16 сентября 2020, 22:11
А что не понятно, в чём затыка? В условиях же прямо почти всё расписано, как решать:
Считываешь число N
Считываешь N раз числа
Пока считываешь, пасёшь, не максимальное ли оно
Выводишь на экран максимальное
0
hidden #2419907
16 сентября 2020, 23:24
я бы наверное не просил помощи, еслиб понимал как, не?
0
ГоффMaster
17 сентября 2020, 07:24
ну вот вверху алгоритм в 4 пункта. Какой из них непонятен и вызывает сложности? Если самый первый уже непонятен, то надо курс начать сначала.
0
hidden #2419907
17 сентября 2020, 14:33
можешь показать пример решения?
0
Александр
17 сентября 2020, 15:07
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
if (n > 0) {
int[] numbers = new int[n];
for (int i = 0; i < n; i++) {
numbers[i] = Integer.parseInt(reader.readLine());
}
Arrays.sort(numbers);
int maximum = numbers[n-1];
System.out.println(maximum);
}
}
Тут действительно всё просто. Не торопись, не спеши пройти весь курс за два часа
+1
ГоффMaster
17 сентября 2020, 18:41
да что за поветрие тут такое - сортировать массив для того, что бы найти максимум? Во-первых, этого никогда не надо делать. Во-вторых, в этой задаче никакой аррэй вообще не нужен.
Ну и в третьих - не надо готовые решения, тем более такие, тут публиковать.
+1
Александр
18 сентября 2020, 07:09
Человек отчаялся понять ваши объяснения и попросил пример решения. Вы мните себя великими учителями и программистами, а я просто выполняю его просьбу. Разбираться в чужом коде тоже полезно.
Ну и на ваши указания,что делать, а что не делать, мне, разумеется, положить болт.
0
Ksenia Volkova Java Developer в DXC Master
18 сентября 2020, 07:36
Разбираться в чужом плохом коде, конечно, полезно. Но для этого надо уже иметь какие-то навыки.
А для новичка плохой код - просто дурной пример, которому он по незнанию может начать следовать.
Нас всем доводилось писать плохой код. Но если на это "класть болт" - он таким и останется.
+1
ГоффMaster
19 сентября 2020, 11:00
Александр, человек, который отчаялся понять объяснения, довольно часто обращается за помощью и у меня сложилось отчётливое ощущение, что он не собирается разбираться в коде. Ты, скорее всего, этого не знал. Именно поэтому я ему предложил подумать самому и направление дал, разбив задачу на небольшие составляющие. Это по конкретному случаю.
На мою оценку твоего кода ты можешь класть любой болт, и никому, кроме тебя самого и тех людей, которым ты якобы своим корявым кодом хочешь помочь, от этого ни горячо и не холодно. Вопрос лишь в том - твоя помощь приносит пользу или вред?
Удачи!
+1
Александр
20 сентября 2020, 07:22
Спасибо, удача мне понадобится. Вашу позицию я понял.
Чтобы не повторять подобного рода дебаты, озвучу свою. Я не принимаю за догму утверждение, что показывать готовое решение - это зло. Судить о том, принесла ли моя помощь пользу или вред, может только человек, который ею воспользовался. Поэтому, я даю и буду давать ту информацию, которую он попросил, а не ту, которая для него будет по моему мнению полезна. С другой стороны, в дальнейшем, если буду давать готовое решение, то обязательно отмечу пометкой типа: "Я тоже учусь. Это говнокод. Есть варианты лучше, обязательно их ищите".
+2
ГоффMaster
20 сентября 2020, 12:57
Вполне разумный ответ. Но про пользу и вред, к сожалению, не верный. Вот тебя же кто-то научил сортировать массив что бы определить его максимум, а ты не стал искать способа получше, посчитал этот вполне для себя полезным. И даже советуешь его другим, множа вредную привычку. Это частный случай, мелочь, а ведь очень показательный.
0