Задания
Версия для печати и копирования в MS Word
Тип 16 № 37847
i

На­пи­ши­те про­грам­му, ко­то­рая в по­сле­до­ва­тель­но­сти целых чисел опре­де­ля­ет сумму двух наи­боль­ших и сумму двух наи­мень­ших. Про­грам­ма долж­на вы­ве­сти две этих суммы в ука­зан­ном по­ряд­ке. Про­грам­ма по­лу­ча­ет на вход целые числа, ко­ли­че­ство вве­ден­ных чисел не из­вест­но, по­сле­до­ва­тель­ность чисел за­кан­чи­ва­ет­ся чис­лом 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])

Спрятать критерии
Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Пред­ло­же­но вер­ное ре­ше­ние. Про­грам­ма пра­виль­но ра­бо­та­ет на всех при­ведённых выше те­стах. Про­грам­ма может быть за­пи­са­на на любом языке про­грам­ми­ро­ва­ния2
Про­грам­ма выдаёт не­вер­ный ответ на одном из те­стов, при­ведённых выше1
Про­грам­ма выдаёт на те­стах не­вер­ные от­ве­ты, от­лич­ные от опи­сан­ных в кри­те­рии на 1 балл0
Мак­си­маль­ный балл2
Раздел кодификатора ФИПИ: