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

