Шешімі: Подсчёт обменов в массиве
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 9. Значения элементов равны 1, 7, 8, 4, 1, 1, 2, 2, 9, 5 соответственно, то есть $A[0] = 1$, $A[1] = 7$ и т. д. Определите значение переменной $c$ после выполнения следующего фрагмента программы.
1c = 0 2for i in range(1, 10): 3 if A[i-1] < A[i]: 4 c = c + 1 5 A[i-1], A[i] = A[i], A[i-1]
Шешім по шагам
5 қадамНачинаем с массива $(1, 7, 8, 4, 1, 1, 2, 2, 9, 5)$ и $c=0$. При $i=1$ выполняется условие $1<7$, поэтому происходит обмен и $c=1$.
После обмена при $i=2$ сравниваются $1$ и $8$: условие выполняется, $c=2$. При $i=3$ сравниваются $1$ и $4$: условие также выполняется, $c=3$.
При $i=4$ и $i=5$ сравниваются равные единицы, поэтому обменов нет.
При $i=6$ выполняется сравнение $1<2$, затем после обмена при $i=7$ выполняется $1<2$. Значение $c$ становится равным 5.
При $i=8$ выполняется $1<9$, а при $i=9$ — $1<5$. Ещё два обмена дают итоговое значение $c=7$.
Где здесь ошибаются
Продолжают сравнения с исходным массивом, не учитывая выполненные обмены.
Забывают, что цикл выполняется для всех значений $i$ от 1 до 9.
Не увеличивают счётчик при каждом выполнении условия.