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

Пред­став­лен­ный ниже на пяти язы­ках про­грам­ми­ро­ва­ния фраг­мент про­грам­мы об­ра­ба­ты­ва­ет эле­мен­ты од­но­мер­но­го це­ло­чис­лен­но­го мас­си­ва A с ин­дек­са­ми от 0 до 10. Перед на­ча­лом вы­пол­не­ния дан­но­го фраг­мен­та эти эле­мен­ты мас­си­ва имели зна­че­ния 4, 5, 6, 3, 5, 6, 2, 5, 8, 3, 4 (т. е. A[0]  =  4, A[1]  =  5, …, A[10]  =  4). Опре­де­ли­те зна­че­ние пе­ре­мен­ной s после вы­пол­не­ния фраг­мен­та.

Бей­сикPython

s = 0

FOR k = 1 TO 9

    IF 2*A(k) < A(k-1)+A(k+1) THEN

        s = s + A(k)

        A(k) = 2 * A(k)

    END IF

NEXT k

 

s = 0

for k in range(1,10):

    if 2*A[k] < A[k-1]+A[k+1]:

        s = s + A[k]

        A[k] = 2 * A[k]

Пас­кальАл­го­рит­ми­че­ский язык

s := 0;

for k:=1 to 9 do begin

    if 2*A[k] < A[k-1]+A[k+1] then begin

        s := s + A[k];

        A[k] := 2 * A[k];

    end;

end;

 

s := 0

нц для k от 1 до 9

    если 2*A[k] < A[k-1]+A[k+1] то

        s := s + A[k]

        A[k] := 2 * A[k]

    все

кц

С++

s = 0;

for (k = 1; k <= 9; ++k) {

    if (2*A[k] < A[k-1]+A[k+1]) {

        s = s + A[k];

        A[k] = 2 * A[k];

    }

}

Спрятать решение

Ре­ше­ние.

Дан­ный ал­го­ритм удва­и­ва­ет зна­че­ние те­ку­ще­го эле­мен­та мас­си­ва, если удво­ен­ное зна­че­ние те­ку­ще­го эле­мен­та мас­си­ва мень­ше, чем сумма двух со­сед­них эле­мен­тов, при этом в пе­ре­мен­ной s на­кап­ли­ва­ет­ся зна­че­ние те­ку­ще­го эле­мен­та мас­си­ва.

 

Из­на­чаль­ный по­ря­док зна­че­ний: 4, 5, 6, 3, 5, 6, 2, 5, 8, 3, 4.

Пер­вое из­ме­не­ние эле­мен­тов: 4, 5, 6, 6, 5, 6, 2, 5, 8, 3, 4. Те­перь s = 3.

Вто­рое из­ме­не­ние эле­мен­тов: 4, 5, 6, 6, 10, 6, 2, 5, 8, 3, 4. Те­перь s = 8.

Тре­тье из­ме­не­ние эле­мен­тов: 4, 5, 6, 6, 10, 6, 4, 5, 8, 3, 4. Те­перь s = 10.

Четвёртое из­ме­не­ние эле­мен­тов: 4, 5, 6, 6, 10, 6, 4, 10, 8, 3, 4. Те­перь s = 15.

По­след­нее из­ме­не­ние эле­мен­тов: 4, 5, 6, 6, 10, 6, 4, 10, 8, 6, 4. Те­перь s = 18.

 

Ответ: 18.