Задание: В программе используется одномерный целочисленный массив A с индексами от 1 до 10. Значения элементов равны 5, 4, 8, 6, 5, 1, 4, 8, 3, 4 соответственно, т.е. A[1] = 5, A[2] = 4 и т.д. Определите значение переменной x после выполнения следующего фрагмента этой программы:
Pascal: |
x := 0;
for i := 2 to 10 do
if A[i] < A[1] then begin
x := x + 1;
k := A[i];
A[i] := A[1];
A[1] := k;
end; |
Решение: Цикл начинает проверять массив от 2 элемента (в первом повторе цикла i:=2), и каждый повтор цикла проверяется условие:
Если A[i] < A[1] То — проще говоря, если проверяемый элемент меньше первого элемента
x := x + 1; — значение переменной x увеличивается на единицу
k := A[i]; — переменной k присваивается значение проверяемого элемента
A[i] := A[1]; — проверяемому элементу присваивается значение первого элемента
A[1] := A[i]; — первому элементу присваивается проверяемый элемент.
Проще говоря, каждый раз, когда условие выполняется, переменная x увеличивается на 1, а первый и проверяемый элементы меняются местами.
Изобразим данный массив в виде таблицы:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
5 | 4 | 8 | 6 | 5 | 1 | 4 | 8 | 3 | 4 |
В первом повторе i = 2, проверяются a[2] и a[1], условие 4<5 выполняется, элементы меняются местами, x = 1:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
4 | 5 | 8 | 6 | 5 | 1 | 4 | 8 | 3 | 4 |
Во втором повторе условие не выполняется, т.к. i=3, условие a[3] < a[1] не выполняется.
В третьем повторе условие не выполняется, т.к. i=4, условие a[4] < a[1] не выполняется.
В четвертом повторе условие не выполняется, т.к. i=5, условие a[5] < a[1] не выполняется.
В пятом повторе i=6, условие a[6] < a[1] выполняется, 6-й и 1-й элементы поменяются местами, x = 2:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
1 | 5 | 8 | 6 | 5 | 4 | 4 | 8 | 3 | 4 |
Первая ячейка массива стала наименьшим элементом массива, значит условие a[i] < a[1] больше не выполнится.
Условие выполнилось 2 раза, переменная x стала равна 2.
Ответ: 2