Форум » Массивы, сортировка, работа с файлами » А 12 » Ответить

А 12

Lika: Помогите, пожалуйста, разобраться в задаче из варианта демо. Сначала заполняем массив, получаем 9 8 7 6 5 4 3 2 1 0 Затем меняем местами, т. е. разворачиваем наоборот половину массива (цикл ведь выполняется 5 раз), т е получаем 0 1 2 3 4 , но остальные элементы ведь не меняются, так и остается т.е результат 0123443210, почему же правильный ответ 2?

Ответов - 5

1ро4ка_двадва88: k := A; A := A[9-i]; A[9-i] := k; эта последовательность разворачивает массив ПОЛНОСТЬЮ!

1ро4ка_двадва88: Если не понятно: вначале в переменную записывается значение первого элемента, далее в первый элемент записывается значение последнего. В последний элемент записывается значение переменной. Так прокручивается 5 раз, получаем 0 1 2 3 4 5 6 7 8 9

Lika: Вот это я и не могу понять почему полностью, если в цикле указано i=0 to 4, то заменяются только 5 элементов, а остальные остаются как были первый массив 9 8 7 6 5 4 3 2 1 0 в нем заменили первые 5 элементов 01234 где написано в программе о замене следующих элементов?


1ро4ка_двадва88: 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 - попробуйте сами догадаться, к чему приведет эта строчка цикла

oval: Lika пишет: Вот это я и не могу понять почему полностью, наберите программу и в пошаговом режиме ее прогоните, или попробуйте запустить в таком виде:[pre2] 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[/pre2] т.е после каждой перестановки печатаем весь массив



полная версия страницы