Задание:
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 5; 1; 6; 7; 8; 8; 7; 7; 6; 9 соответственно, т.е. A[0] = 5; A[1] = 1 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы:
c := 0;
for i := 1 to 9 do
if A[i-1] >= A[i] then begin
t:= A[i];
A[i]:= A[i - 1];
A[i-1]:= t
end
else
c:= c + 1;
Ответ: 4
Решение:
* Разберем задачу по циклам:
* Заметим, что переменная C изменяется в противном случае от условия, то есть нам нужно, чтобы условие не выполнялось.
Цикл 1:
A[0] >= A[1], 5 > = 1, да, условие выполняется, меняем значения A[0] на A[1] и наоборот. => A[1] = 5
Цикл 2:
A[1] >= A[2], 5 >= 6, нет, условие не выполняется, c = c + 1 = 0 + 1 = 1, значения остаются прежними.
Цикл 3:
A[2] >= A[3], 6 >= 7, нет, условие не выполняется, c = c + 1 = 1 + 1 = 2, значения остаются прежними.
Цикл 4:
A[3] >= A[4], 7 >= 8, нет, условие не выполняется, c = c + 1 = 2 + 1 = 3, значения остаются прежними.
Цикл 5:
A[4] >= A[5], 8 >= 8, да, условие выполняется, меняем значения A[4] на A[5] и наоборот. => A[5] = 8
Цикл 6:
A[5] >= A[6], 8 >= 7, да, условие выполняется, меняем значения A[5] на A[6] и наоборот. => A[6] = 7
Цикл 7;
A[6] >= A[7], 7 >= 7, да, условие выполняется, меняем значения A[6] на A[7] и наоборот. => A[7] = 7
Цикл 8:
A[7] >= A[8], 7 >= 6, да, условие выполняется, меняем значения A[7] на A[8] и наоборот. => A[8] = 7
Цикл 9 - последний:
A[8] >= A[9], 7 >= 9, нет, условие не выполняется, c = c + 1 = 3 + 1 = 4