В цикле while я присвоил ко второму минимальному (secmin) min,вроде бы понимаю почему присваиваем,типо если не присвоить,то в оба значнеия попадет не то что нужно и выведется MAX_VALUE,а вот зачем вообще эта строчка? изначально же secmin = MAX_VALUE
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner p = new Scanner(System.in);
int min = Integer.MAX_VALUE;
int secmin = Integer.MAX_VALUE;
while (p.hasNextInt()){
int a = p.nextInt();
if (a < min){
min = a;
} else if (a > min && a < secmin){
secmin = a;
}
} System.out.println(secmin);
}
}
даня клава
25 уровень
помогите добрые люди) ломаю голову)
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ГоффMaster
16 января 2024, 21:37
Смотри, решать задачу я бы предложил так:
Предположим, у нас есть уже два числа, минимальное мин и второе минимальное 2мин. Когда нам прилетает следующее число, то оно попадает в одну из трёх областей - слева от мин, между мин и 2мин и справа от 2мин. Это легко проверяется ифами, мин и 2мин корректируются по необходимости, далее считываем в цикле следующее число.
С этим всё вроде должно быть понятно.
Теперь к началу - что бы запустить этот цикл, нам нужна начальная пара чисел мин - 2мин из вводимой последовательности.
Здесь всё тоже довольно просто.
Считываем первое число - это 100% кандидат либо на начальный мин, либо на начальный 2мин. Считываем второе, и если оно равно первому, пропускаем его и считываем следующее - ведь нам нужна пара разных чисел. Если не равно, то вот мы получили изначальную пару. Смотрим, которое из них меньше - это будет мин, которое больше - 2мин.
Теперь можем запускать цикл по считыванию остальных чисел.
MAX_VALUE к решению задачи, как видишь, не имеет вообще отношения.
0
ГоффMaster
16 января 2024, 21:44
Если непонятно, зачем нам нужно искать два разных числа для начальной пары - в принципе, это не обязательно, НО: задача не имеет правильного решения, если все введённые числа одинаковые. Нам нужно минимум два разных числа, что бы выдать второе минимальное. Хотя этот случай в условии никак не оговаривается, но, по-хорошему, прога должна такой случай отлавливать.
0
hidden #3303140
16 января 2024, 09:12
Так у тебя min только до цикла будет равно MAX_VALUE, в цикле-то это значение уже изменится.
Да, оно в первый раз у тебя изменится с MAX_VALUE на MAX_VALUE, то есть по сути останется тем же самым, но что будет в следующий раз, если ввести число меньше минимального?
0) min = MAX_VALUE, secmin = MAX_VALUE
1) ввёл "5": min = 5, secmin = MAX_VALUE
2) ввёл "3": min = 3, secmin = 5
Понял, зачем присваивается secmin = min? Тебе нужно запомнить предыдущее минимальное, потому что оно становится вторым минимальным, если ввести число ещё меньше.
0
RomanExpert
16 января 2024, 06:43
Про какую строчку идет речь? Нужен код
0
даня клаваРаботает в dota 2
16 января 2024, 08:52
Отредачил
0
Стас ПасинковSoftware Developer в ZipyMaster
15 января 2024, 23:51
прикріпи свій код
0
Martin_Iden33
16 января 2024, 18:14
He aha te take o te waiho i tetahi korero i roto i tetahi atu reo i raro i te panui i te reo Ruhia?
0