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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 21:24   #1
denis2010
Пользователь
 
Регистрация: 16.01.2010
Сообщений: 11
По умолчанию программа,по перестановке элементов по порядку.

в программу вводим нули,единицы,двойки
выводим
эти числа по порядку,то есть сначала все нули,потом единицы,потом двойки...


const n=10;
procedure swap(var a,b:integer);{процедура,которая меняет два элемента в массиве}
var c: integer;{a,b-элементы массива,c-коробочка,нужная для перестановки элементов}
begin
c:=a;
a:=b;
b:=c;
end;
var
l,m,r,b,i:integer;
a: array[1..n] of integer;
begin
for i:=1 to n do
read(a[i]);
b:=1;
l:=0; m:=0; r:=n;
{инвариант: a[1..l]<b; a[l+1..m]=b; a[r+1]..a[n]>b}
while m <> r do begin
if a[m+1]=b then begin
m:=m+1;
end else if a[m+1]>b then begin
swap(a[m+1],a[r]);
r:=r-1;
end else begin {a[m+1]<b}
swap(a[m+1],a[l+1]);
l:=l+1; m:=m+1;

end;
end;
for i:=1 to n do
write(a[i], ' ');
end.

можете пож-ла прокомментировать каждую выделенную строку после строки инвариант и до двух end...
и объяснить мне по какому принципу работает эта программа?
denis2010 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить номер по перестановке WOWka777 Общие вопросы C/C++ 2 08.04.2011 18:27
Внесение данных по порядку Dog_DinGo Microsoft Office Excel 2 25.03.2011 20:03
Стек, вивести у зворотньому порядку Sonne_asja Паскаль, Turbo Pascal, PascalABC.NET 1 13.03.2011 15:14
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13
как посчитать даты по порядку? Vorchun Microsoft Office Excel 4 27.11.2008 21:32