<span>10001011111100
</span><span>1011000101100010
</span>1000110110100
<span>111001000
</span><span>101011000011
</span><span>101100010110</span>
Рассмотрим, что делает эта программа.
c := 0; // начальное значение счётчика
for i := 1 to 9 do // цикл по i
if A[i - 1] < A[i] then begin // если текущий элемент больше предыдущего
c := c + 1; // то увеличиваем счётчик на 1
t := A[i]; // и меняем текущий элемент местами с предыдущим
A[i] := A[i - 1];
A[i - 1] := t
end;
Последние три строчки перед end - обычный алгоритм обмена значениями между двумя переменными (t = a; a = b; b = t).
Итак, моделируем, что делает программа и считаем число обменов.
0) 6 9 7 2 1 5 0 3 4 8 - исходный массив
1) <span>6 9 7 2 1 5 0 3 4 8 -> </span><span>9 6 7 2 1 5 0 3 4 8 ОБМЕН
2) </span>9 6 7 2 1 5 0 3 4 8 -> <span>9 7 6 2 1 5 0 3 4 8 ОБМЕН
3) </span>9 7 6<span> 2 1 5 0 3 4 8 ОК
4) </span>9 7 6<span> 2 1 5 0 3 4 8 ОК
5) </span>9 7 6 2 1 5 0 3 4 8 -> 9 7 6<span> 2 5 1 0 3 4 8 ОБМЕН
6) </span>9 7 6<span> 2 5 1 0 3 4 8 ОК
7, 8, 9) Ноль будет "всплывать" в конец, 3 ОБМЕНА
Всего будет 6 обменов, <u>c = 6</u>.</span>
const
n = 3;
var
s,i : integer;
begin
for i := 1 to n do
if odd(i) then
s := s + i * i * i
else
s := s + i * i;
writeln (s);<span>
end.</span>