Uses Crt;
procedure MinMax(a,b:integer; var min,max:integer);
begin
if a>b then begin max:=a; min:=b end
else begin max:=b; min:=a end
end;
var
x,y,mx,mn:integer;
begin
ClrScr;
Write('a,b= '); Read(x,y);
MinMax(x,y,mn,mx);
Writeln('min=',mn,', max=',mx);
ReadKey
end.
<em><u>Тестовое решение:</u></em>
a,b= 163 97
min=97, max=163
В задаче достаточно держать в памяти два числа: наибольшее и второе по величине – и обновлять эту пару, считывая числа. Если считанное число больше максимального, то оно будет новым максимумом, а бывший максимум станет вторым по величине; если считанное число меньше максимального, но больше второго по величине, то оно становится новым вторым по величине.
Реализация (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
<span>В СЛОВЕ МЕГАБАЙТ 64 бита, т. к. каждая буква - 1 байт, а в каждом байте 8 бит</span>
<em>// PascalABC.NET 3.2, сборка 1345 от 24.11.2016</em>
<em>// Внимание! Если программа не работает, обновите её версию!</em>
begin
var a:=ArrRandom(30,-30,30); a.Println;
Sort(a); a.Println
end.
<u>Пример</u>
-19 19 19 -18 13 -19 -3 13 7 -11 7 0 -12 -21 8 9 -30 27 -18 18 -28 25 -19 -12 -26 -23 1 -15 -4 -9
-30 -28 -26 -23 -21 -19 -19 -19 -18 -18 -15 -12 -12 -11 -9 -4 -3 0 1 7 7 8 9 13 13 18 19 19 25 27