В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
| Бейсик | Python |
|---|---|
FOR i = 0 TO 10 A(i) = i NEXT i FOR i = 1 TO 11 A(i - 1) = A(11 - i) NEXT i
| for i in range(0, 11): A[i] = i for i in range(1, 12): A[i - 1] = A[11 - i]
|
| Паскаль | Алгоритмический язык |
for i : = 0 to 10 do A[i] : = i; for i : = 1 to 11 do A[i-1] : = A[11-i];
| нц для i от 0 до 10 A[i] : = i кц нц для i от 1 до 11 A[i-1] := A[11-i] кц |
| Си++ | |
for (i = 0; i <= 10; i++) { A[i] = i; } for (i = 1; i <= 11; i++) { A[i-1] = A[11-i]; } | |
Чему будут равны элементы этого массива?
1) 10 9 8 7 6 5 4 3 2 1 0
2) 11 10 9 8 7 6 5 4 3 2 1
3) 10 9 8 7 6 5 6 7 8 9 10
4) 11 10 9 8 7 6 7 8 9 10 11
Первый цикл, заполняем массив:
i=0: a[0]=0,
i=1: a[1]=1,
i=2: a[2]=2,
...
i=10: a[10]=10.
Второй цикл, меняем значения всех элементов: обращаемся к значениям, полученным при заполнении массива.
i=1: a[0]=a[10]=10,
i=2: a[1]=a[9]=9,
...
i=6: a[5]=a[5]=5
i=7: a[6]=a[4]=6(Начиная с этого элемента обращаемся к уже изменённым элементам )
i=11: a[10]=a[0] = 10,
Поэтому в результате выполнени программы элементы массива будут равны: 10, 9, 8, 7, 6, 5, 6, 7, 8, 9, 10.
Правильный ответ указан под номером 3.


почему мы с 7 элемента обращаемся уже к измененным?а не продолжаем ряд ...4,3,2..?
Потому что на каждый элемент массива отведена одна ячейка памяти, соответственно, выполняя действие A[i-1] : = A[11-i] при i=7, мы присваиваем шестому элементу значение, которое находится в ячейке 4. Оно равно 6 (поскольку до этого мы присвоили четвертому элементу значение 6).