В задаче достаточно держать в памяти два числа: наибольшее и второе по величине – и обновлять эту пару, считывая числа. Если считанное число больше максимального, то оно будет новым максимумом, а бывший максимум станет вторым по величине; если считанное число меньше максимального, но больше второго по величине, то оно становится новым вторым по величине.
Реализация (python 3):
max, max2 = int(input()), int(input())
if max2 > max:
max, max2 = max2, max
while True:
t = int(input())
if t == 0: break
if t > max:
max, max2 = t, max
elif t > max2:
max2 = t
print(max2)
Пример ввода:
5
1
3
2
4
0
Пример вывода:
4
<h3>PascalABC.NET 3.4.2, сборка 1864 от 11.11.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
var a := ArrRandom(10, -10, 10);
a.Println;
var i := a.IndexMax;
Writeln('максимальный a[', i + 1, ']=', a[i]);
i := a.IndexMin;
Writeln('минимальный a[', i + 1, ']=', a[i])
end.
<h2>-2 0 -3 0 3 -2 1 -9 -9 -2</h2><h2>максимальный a[5]=3</h2><h2>минимальный a[8]=-9</h2>
Program gt;
var A,B,C:real;
begin
readln(A,B,C);
if(A<B)and(B<C)then A:=B+C else A:=C-B;
writeln(A,' ',B,' ',C);
end.
Ответ:
Var i:integer
Begin
For i:=-5 to 5 do
Writeln (2*sin(0.2*i*3));
End.