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

