Добавил:
Hist
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Паскаль (I семестр) / K02-172 / 08 / shaker
.pas program shaker;
(*
(c) 2005 Dima Zolotukhin aka 'Zlogic' <zlogic@gmail.com>
Redistributable under GNU GPL license
*)
const
MAX_PATH = 100;
type
str_path = string[MAX_PATH];
str_message = string[70];
function get_string(m:str_message):str_path;
var
temp_str:str_path;
begin
write(m,'> ');
readln(temp_str);
get_string:=temp_str;
end;
procedure swap(var str:str_path;x,y:byte);
var
temp_str:str_path;
begin
temp_str:=copy(str,x,1);
delete(str,x,1);
if(y>x)then
y:=y-1;
insert(temp_str,str,y);
end;
function bubble_forward(var str:str_path):boolean;
var
i:byte;
begin
bubble_forward:=false;
for i:=1 to length(str)-1 do
begin
if(copy(str,i,1)>copy(str,i+1,1))then
begin
swap(str,i+1,i);
bubble_forward:=true;
end;
end;
end;
function bubble_backwards(var str:str_path):boolean;
var
i:byte;
begin
bubble_backwards:=false;
for i:=length(str) downto 2 do
begin
if(copy(str,i,1)<copy(str,i-1,1))then
begin
swap(str,i,i-1);
bubble_backwards:=true;
end;
end;
end;
procedure shaker_sort(var str:str_path);
var
found,sort_backwards:boolean;
begin
found:=true;
sort_backwards:=true;
while(found)do{Ї®Є Ґ ©¤Ґ®}
begin
if(sort_backwards)then{б®авЁа㥬 вг¤ }
found:=bubble_backwards(str)
else{б®авЁа㥬 ®Ўа в®}
found:=bubble_forward(str);
sort_backwards:=not sort_backwards;{¬ҐпҐ¬ Їа ў«ҐЁҐ}
end;
end;
var
str:str_path;
begin
str:=get_string('‚ўҐ¤ЁвҐ бва®Єг');{Ї®«гз Ґ¬ Ёб室го бва®Єг}
shaker_sort(str);{б®авЁа㥬}
writeln('Ћвб®авЁа®ў п бва®Є : ',str);{ўлў®¤Ё¬}
readln;
end.
(*
(c) 2005 Dima Zolotukhin aka 'Zlogic' <zlogic@gmail.com>
Redistributable under GNU GPL license
*)
const
MAX_PATH = 100;
type
str_path = string[MAX_PATH];
str_message = string[70];
function get_string(m:str_message):str_path;
var
temp_str:str_path;
begin
write(m,'> ');
readln(temp_str);
get_string:=temp_str;
end;
procedure swap(var str:str_path;x,y:byte);
var
temp_str:str_path;
begin
temp_str:=copy(str,x,1);
delete(str,x,1);
if(y>x)then
y:=y-1;
insert(temp_str,str,y);
end;
function bubble_forward(var str:str_path):boolean;
var
i:byte;
begin
bubble_forward:=false;
for i:=1 to length(str)-1 do
begin
if(copy(str,i,1)>copy(str,i+1,1))then
begin
swap(str,i+1,i);
bubble_forward:=true;
end;
end;
end;
function bubble_backwards(var str:str_path):boolean;
var
i:byte;
begin
bubble_backwards:=false;
for i:=length(str) downto 2 do
begin
if(copy(str,i,1)<copy(str,i-1,1))then
begin
swap(str,i,i-1);
bubble_backwards:=true;
end;
end;
end;
procedure shaker_sort(var str:str_path);
var
found,sort_backwards:boolean;
begin
found:=true;
sort_backwards:=true;
while(found)do{Ї®Є Ґ ©¤Ґ®}
begin
if(sort_backwards)then{б®авЁа㥬 вг¤ }
found:=bubble_backwards(str)
else{б®авЁа㥬 ®Ўа в®}
found:=bubble_forward(str);
sort_backwards:=not sort_backwards;{¬ҐпҐ¬ Їа ў«ҐЁҐ}
end;
end;
var
str:str_path;
begin
str:=get_string('‚ўҐ¤ЁвҐ бва®Єг');{Ї®«гз Ґ¬ Ёб室го бва®Єг}
shaker_sort(str);{б®авЁа㥬}
writeln('Ћвб®авЁа®ў п бва®Є : ',str);{ўлў®¤Ё¬}
readln;
end.
Соседние файлы в папке 08