Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2016, 21:29   #11
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

нет...я вам не надоел?
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 21:41   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Тогда начнем с основ:
Оператор присваивания http://informatics.mccme.ru/mod/reso...iew.php?id=641
Оператор for http://informatics.mccme.ru/mod/reso...iew.php?id=648
Прочтите, там всего лишь 3 страницы.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2016, 22:54   #13
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

Ну про это я знаю, просто я не понимаю вот этого:
после того как мы k присвоили A[2*i] что мы с этого получили, я не вижу связи.....
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 23:08   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Вы точно прочли статьи? Там как раз был пример с x, y, tmp для обмена значениями, а в обсуждаемом коде:
Код:
k := A[2*i];
A[2*i] := A[2*i+1];
A[2*i+1] := k;
То есть произвели обмен между двумя элементами массива. А чтобы не записывать 4 очень похожих обмена (как в коде в 3-ем посте), эту операцию расположили в цикле.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2016, 23:30   #15
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

про ЗАМЕНУ я все понял мне непонятны сами элементы. Простите что вас мучаю... Объясните, пожалуйста, A[2*i], A[2*i+1] что происходит???
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 23:54   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Не уверен, что понял вопрос.
Есть массив A. Хотим использовать нулевой элемент - запишем A[0]. Хотим заполнить массив значениями, запишем:
Код:
A[0] := 0;
A[1] := 1;
A[2] := 2;
Чтобы не писать одно и то же используем цикл:
Код:
for i := 0 to 2 do
  A[i] := i;
Но можно не просто брать i в качестве индекса, но и записывать целые выражения, чтобы ссылаться в цикле на нужные элементы массива.
"A[2*i], A[2*i+1]" - при i, равном 3, будут рассматриваться элементы A[6] и A[7], например.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.04.2016, 00:00   #17
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

Блин, спасибо вам огромное!!!!!!!!! Мне это и нужно было. Благодарю!

Как я это все понимаю:
for i:= 1 to 4 do begin
k:= A[2*i];
Это значит что из 0 1 2 3 4 5 6 7 8 9 10 мы получаем 0 2 4 6 8
а после A[2*i+1] получаем 1 3 5 7 9. Что такое...

Последний раз редактировалось BDA; 12.04.2016 в 00:17.
Дюша Метелкин вне форума Ответить с цитированием
Старый 12.04.2016, 00:16   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Пожалуйста. Удобнее рассматривать каждую итерацию отдельно, но если рассмотреть сразу все итерации по i в данном цикле, то, да, A[2*i] и A[2*i+1] будут принимать такие значения (до обмена), за исключением значений 0 и 1. Они не будут рассматриваться, так как минимальный индекс в этом цикле это 2, а эти значения расположены в элементах с меньшим индексом.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.04.2016, 00:27   #19
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

и как они в итоге объединяются? вот я получил 0 2 4 6 8 а потом 1 3 5 7 9. А как определяется, по какому порядку они в итоге стоят?
Дюша Метелкин вне форума Ответить с цитированием
Старый 12.04.2016, 00:43   #20
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Вот поэтому не стоит брать значения элементов со всех итераций разом. Потому что так сложнее понять, что с кем происходит.
Код:
for i:= 1 to 4 do
begin
  k:=A[2*i];
  A[2*i]:=A[2*i+1];
  A[2*i+1]:=k;
end;
Внутренняя часть цикла будет выполнена 4 раза. При этом i последовательно примет значения от 1 до 4. Когда i будет равно 1, то код внутри тела цикла будет эквивалентен:
Код:
k:=A[2];
A[2]:=A[3];
A[3]:=k;
То есть произойдет обмен значениями у 2 и 3 элементов массива.
При i = 2 будет выполнено:
Код:
k:=A[4];
A[4]:=A[5];
A[5]:=k;
То есть обмен между 4 и 5 элементами. И так далее, пока цикл не закончится.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рекурсивный алгоритм. Nelson1992 Помощь студентам 9 21.03.2010 12:09
Рекурсивный алгоритм SVM Общие вопросы C/C++ 7 13.11.2009 09:24
Сортировка, поиск, рекурсивный алгоритм Delphi Stases Помощь студентам 4 29.05.2009 01:15
Разработать рекурсивный алгоритм lucky Паскаль, Turbo Pascal, PascalABC.NET 4 08.05.2009 15:04