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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2017, 21:42   #1
BlooD_xD
 
Регистрация: 26.02.2017
Сообщений: 6
По умолчанию [Pascal] объясните как работает код

программа, сортирующая массив
Код:
const N =10;
var arr: array[1..N] of integer;
i,j,k: integer;
begin
randomize;
for i:=1 to N do begin
Arr[i]:=random(15);
end;
writeln(arr);
 for i := 1 to n-1 do
        for j := 1 to n-i do
            if arr[j] > arr[j+1] then begin
                k := arr[j]; // k = 12
                arr[j] := arr[j+1]; // 12  = 11 
                arr[j+1] := k // 11 
            end;
 
    write ('Отсортированный массив: ');
    for i := 1 to n do
        write (arr[i]:4);
 
    writeln;

end.
понимаю принцип работы программы, но не могу понять конкретно вот эти строчки
Код:
k := arr[j]; 
                arr[j] := arr[j+1]; 
                arr[j+1] := k
как работает k?
BlooD_xD вне форума Ответить с цитированием
Старый 21.10.2017, 22:12   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Этому приему обучают в первый день курса программирования. Задача: поменять местами содержимое переменных a и b. Новичок пишет:
Код:
 а := b;
 b := a ;
Облом-с - в обоих ячейках будет первоначальное содержимое b .
Тогда предлагают бытовую задачу: в стакане - водка, в фужере - коньяк. Поменять. Чел сразу начинает соображать: коньяк - в чашку, водку из стакана в фужер, коньяк - из чашки в стакан . Так и тут - k - вспомогательнвя переменная, та самая чашка , и никак она не работает - ее просто используют.
На асме было бы проще
Код:
   push a
   push b
   pop  a
   pop b
---------------------
А сам метод наз. методом пузырька - на каждом шаге внутреннего цикла сравнивают пару соседних значений, и если они не упорядочены, меняют их местами вот этим приемом. После окончания внутреннего цикла как минимум, одно значение упорядочено, и во внешем цикле уже нужно рассматривать на одну пару меньше. Метод можно улучшить - подумай как
Если помог - жми на весы.

Последний раз редактировалось digitalis; 21.10.2017 в 22:26.
digitalis вне форума Ответить с цитированием
Старый 21.10.2017, 22:15   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Похоже на простую замену двух переменных
Код:
arr[j], arr[j+1]
через промежуточную переменную "k".

Ну например, у тебя есть "а=3", "б=4", как поменять значения?
чтобы было "а=4", "б=3"?
Код:
k=а  // к=3
а=б  // а=4 - уже заменено, но только в "а"
б=к  // б=3 - заменено "б"
ura_111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните пожалуйста как работает код Maja Помощь студентам 1 29.11.2015 13:50
Объясните код(графика) - Pascal ABC Max00766 Паскаль, Turbo Pascal, PascalABC.NET 3 25.11.2015 22:40
Объясните как работает код _ROBERT_ Помощь студентам 0 12.12.2012 02:24
Java Script - объясните почему не работает код. fidger JavaScript, Ajax 0 10.05.2009 18:01
Паскаль. рекурсия. числа. объясните, как работает код [silver beast] Помощь студентам 2 21.01.2009 05:00