Автор | Сообщение |
|
Отправлено: 23.05.12 10:01. Заголовок: А 12
Помогите, пожалуйста, разобраться в задаче из варианта демо. Сначала заполняем массив, получаем 9 8 7 6 5 4 3 2 1 0 Затем меняем местами, т. е. разворачиваем наоборот половину массива (цикл ведь выполняется 5 раз), т е получаем 0 1 2 3 4 , но остальные элементы ведь не меняются, так и остается т.е результат 0123443210, почему же правильный ответ 2?
|
|
|
Ответов - 5
[только новые]
|
|
|
Отправлено: 23.05.12 10:10. Заголовок: k := A; A := A; A :=..
k := A ; A := A[9-i]; A[9-i] := k; эта последовательность разворачивает массив ПОЛНОСТЬЮ!
|
|
|
|
Отправлено: 23.05.12 10:13. Заголовок: Если не понятно: вна..
Если не понятно: вначале в переменную записывается значение первого элемента, далее в первый элемент записывается значение последнего. В последний элемент записывается значение переменной. Так прокручивается 5 раз, получаем 0 1 2 3 4 5 6 7 8 9
|
|
|
|
Отправлено: 23.05.12 10:18. Заголовок: Вот это я и не могу ..
Вот это я и не могу понять почему полностью, если в цикле указано i=0 to 4, то заменяются только 5 элементов, а остальные остаются как были первый массив 9 8 7 6 5 4 3 2 1 0 в нем заменили первые 5 элементов 01234 где написано в программе о замене следующих элементов?
|
|
|
|
Отправлено: 23.05.12 10:30. Заголовок: Lika пишет: почему ..
Lika пишет: в посте от 11:13 я пытался объяснить, почему. Сделаю это нагляднее. Задана последовательность 9 8 7 6 5 4 3 2 1 0. Действие k := A(i), при i=0 добавляет в переменную k значение нулевого элемента. Теперь, k=9. Идем дальше по циклу. A(i) := A(9-i) - в этой строчке программы мы нулевому элементу массива присваиваем значение последнего элемента. Теперь САМОЕ ГЛАВНОЕ! A(9-i) := k - попробуйте сами догадаться, к чему приведет эта строчка цикла
|
|
|
|
| постоянный участник
|
Сообщение: 95
|
|
Отправлено: 23.05.12 11:04. Заголовок: Lika пишет: Вот это..
Lika пишет: цитата: | Вот это я и не могу понять почему полностью, |
| наберите программу и в пошаговом режиме ее прогоните, или попробуйте запустить в таком виде: for i :=0 to 4 do begin k := A[ i]; A[ i] := A[9-i]; A[9-i] := k; for k:=0 to 9 do write(A[k]); writeln; end т.е после каждой перестановки печатаем весь массив
|
|
|
|