Представленный ниже на пяти языках программирования фрагмент программы обрабатывает элементы одномерного целочисленного массива A с индексами от 0 до 9. Перед началом выполнения данного фрагмента эти элементы массива имели значения 3, 1, 1, 5, 2, 9, 4, 3, 2, 1 (т. е. A[0] = 3, A[1] = 1, …, A[9] = 1). Определите значение переменной s после выполнения фрагмента.
| Бейсик | Python |
|---|---|
N = 10 s = 0 FOR i = 1 TO N − 1 IF A(i-1) > 2*A(i) THEN A(i) = 2*A(i) s = s + A(i) END IF NEXT i
| n = 10 s = 0 for i in range(1,n): if A[i-1] > 2*A[i]: A[i] = 2*A[i] s = s + A[i]
|
| Паскаль | Алгоритмический язык |
N := 10; s := 0; for i:=1 to N-1 do begin if A[i-1] > 2*A[i] then begin A[i] := 2*A[i]; s := s + A[i]; end; end;
| N := 10 s := 0 нц для i от 1 до N-1 если A[i-1] > 2*A[i] то A[i] := 2*A[i] s := s + A[i] все кц |
| С++ | |
n = 10; s = 0; for (i = 1; i < n; ++i) { if (A[i-1] > 2*A[i]) { A[i] = 2*A[i]; s = s + A[i]; } }
| |
Данный алгоритм удваивает значение текущего элемнета, если значение предыдущего элемента больше удвоенного значения текущего элемента.
Изначальный порядок значений: 3, 1, 1, 5, 2, 9, 4, 3, 2, 1.
Первое изменение элементов: 3, 2, 1, 5, 2, 9, 4, 3, 2, 1.
Второе изменение элементов: 3, 2, 1, 5, 4, 9, 4, 3, 2, 1.
Третье изменение элементов: 3, 2, 1, 5, 4, 9, 8, 3, 2, 1.
Четвёртое изменение элементов: 3, 2, 1, 5, 4, 9, 8, 6, 2, 1.
Пятое изменение элементов: 3, 2, 1, 5, 4, 9, 8, 6, 4, 1.
Последнее изменение элементов: 3, 2, 1, 5, 4, 9, 8, 6, 4, 2.
Всего изменение элементов массива произошло шесть раз. Теперь к переменной s прибавим значения выделенных элементов. Следовательно, s = 2 + 4 + 8 + 6 + 4 + 2 = 26.
Ответ: 26.

