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

