Напишите программу, которая в последовательности целых чисел определяет сумму двух наибольших и сумму двух наименьших. Программа должна вывести две этих суммы в указанном порядке. Программа получает на вход целые числа, количество введенных чисел не известно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введенные числа по модулю не превышают 30 000.
В последовательности не менее двух чисел.
Пример работы программы:
| Входные данные | Выходные данные |
| 3 10 25 12 0 | 37 13 |
Вариант решения на языке Паскаль.
var a, max, max2, min, min2: integer;
begin
min:= 30001;
min2:= 30001;
max:= -30001;
max2:= -30001;
readln(a);
if (a = 0) then begin
min := 0;
min2 := 0;
max := 0;
max2 := 0;
end;
while true do
begin
if (a = 0) then break;
if (a <= min) and (a<>0) then
begin
min2 := min;
min := a;
end
else if (a <= min2) then
min2:=a;
if a >= max then
begin
max2:=max;
max:=a;
end
else if (a >= max2) then
max2:=a;
readln(a);
if a = 0 then break;
end;
writeln(max+max2); writeln(min+min2);
end.
Приведем решение на языке Python.
min = 30001
min2 = 30001
max = -30001
max2 = -30001
a = int(input())
if a == 0:
min = 0
min2 = 0
max = 0
max2 = 0
while True:
if a == 0:
break
if (a <= min) and (a != 0):
min2 = min
min = a
elif a <= min2:
min2 = a
if a >= max:
max2 = max
max = a
elif a >= max2:
max2 = a
a = int(input())
if a == 0:
break
print(max+max2)
print(min+min2)
Приведем другое решение на языке Python.
a = int(input())
max1 = -30000
max2 = -30001
min1 = 30000
min2 = 30001
while a != 0:
if a > max1:
max2 = max1
max1 = a
if a < max1 and a > max2:
max2 = a
if a < min1:
min2 = min1
min1 = a
if a > min1 and a < min2:
min2 = a
a = int(input())
print(max1 + max2)
print(min1 + min2)
Решение Павла Шостка на языке Паскаль.
var
a:=readseqintegerwhile(x->x<>0).order.ToArray;
begin
print(a[^1]+a[^2],a[0]+a[1]);
end.
Решение Сергея Анохина на языке Python.
sp = []
x = int(input())
while x != 0:
sp.append(x)
x = int(input())
sp.sort()
print (sp[-1] + sp[-2])
print (sp[0] + sp[1])



