Решение: Модification массива при цикле
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 11. Значения элементов равны 20, 19, 17, 41, 23, 12, 24, 16, 4, 13, 6, 15 соответственно, то есть $A[0]=20$, $A[1]=19$ и т.д. Определите значение переменной $s$ после выполнения фрагмента программы:
$s=0$
$n=5$
для $i$ от 0 до 11:
если $A[i] \leq A[n]$, то:
$s:=s+i$
$t:=A[i]$
$A[i]:=A[n]$
$A[n]:=t$
Решение по шагам
4 шагаВ начале $s=0$, $n=5$, а $A[5]=12$. При $i=0,1,2,3,4$ условие $A[i]\leq A[5]$ не выполняется.
$$20,19,17,41,23>12$$При $i=5$ условие выполняется: $A[5]=12\leq A[5]=12$. К переменной $s$ прибавляется 5. Обмен элемента с самим собой ничего не меняет.
$$s=0+5=5$$При $i=6$ и $i=7$ условие не выполняется: 24 и 16 больше 12. При $i=8$ условие выполняется, так как $A[8]=4\leq A[5]=12$. После обмена $A[5]=4$, но это уже не влияет на последующие слагаемые.
$$s=5+8=13$$При $i=9,10,11$ значения 13, 6 и 15 не меньше текущего $A[5]=4$ одновременно с условием? Для $i=10$ значение 6 также больше 4, поэтому условие не выполняется.
$$13>4,\ 6>4,\ 15>4$$Где здесь ошибаются
Не учитывать, что при $i=5$ условие выполняется, поскольку используется нестрогое неравенство.
Забыть, что после обработки $i=8$ значение $A[5]$ изменяется с 12 на 4.
Прибавлять к $s$ значения элементов массива вместо индексов.