On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Плохотникова



Сообщение: 1
Зарегистрирован: 30.04.11
Репутация: 0
ссылка на сообщение  Отправлено: 30.04.11 16:00. Заголовок: А 17. Работа с массивами


Здравствуйте, Константин Юрьевич. Объясните пожалуйста решение этой задачи.
Когда я решаю у меня получается 2 вариант ответа, а ошибку не вижу!

В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do
A:= i + 1;
for i:=10 downto 0 do
A:= A[10-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) 11 10 9 8 7 6 7 8 9 10 11
4) 1 2 3 4 5 6 5 4 3 2 1

С уважением, Плохотникова Оксана


Спасибо: 0 
Профиль Ответить
Ответов - 1 [только новые]


Поляков





Сообщение: 62
Зарегистрирован: 10.03.11
Откуда: Россия, Санкт-Петербург
Репутация: 0
ссылка на сообщение  Отправлено: 03.05.11 17:58. Заголовок: Здравствуйте, Оксана..


Здравствуйте, Оксана!
Задачи этого типа легко решаются с помощью любой Паскаль-среды с отладчиком. :-) Вот полная программа:
 program qq; 
var k: integer;
A: array[0..10] of integer;
begin
for k:=0 to 10 do
A[k]:= k + 1;
for k:=10 downto 0 do
A[k]:= A[10-k];
for k:=0 to 10 do write(A[k], ' ');
end.
Хитрость в том, что после того, как мы дошли до середины массива в цикле
 for k:=10 downto 0 do 
A[k]:= A[10-k];
все "старшие" значения второй половины уже "затерты": вместо 11 стоит 1, вместо 10 - 2 и т.д. Они и будут скопированы в первую часть, то есть фактически не изменятся. Получается массив
1 2 3 4 5 6 5 4 3 2 1
Правильный ответ - 4.

Спасибо: 0 
Профиль Ответить
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  10 час. Хитов сегодня: 5
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет