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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2010, 17:37   #1
sancheszone
Пользователь
 
Аватар для sancheszone
 
Регистрация: 11.10.2009
Сообщений: 14
Смущение переход из паскаля в делфи

Помогите разобраться и наставить на путь истиный, дана программа с сортировками, нужно перенести в делфи, естественно с интерфейсом.

Код:
Program Sortirovka;
uses
  Utils,Crt;
type
  DateTime=record
    Day,Month,Year,Hour,Minute,Second,Milliseconds:integer;
  end;
var ob_i,ob_j,ob_z,start_ob,end_ob: integer;      ob_M: array [1..32000] of integer; // var Обмена
    vb_i,vb_k,vb_a,vb_x,start_vb,end_vb: integer; vb_M: array [1..32000] of integer; // var Выбора
    vs_i,vs_j,vs_z,start_vs,end_vs: integer;      vs_M: array [1..32000] of integer;      // var Вставки
    time: DateTime;
    i,j,r,tmpk,zav: integer; ind: boolean; tmp1p,tmpp: real;
const n = 5000;
BEGIN
randomize;
writeln('Генерирую массивы, пожалуйста подождите...');
/// Заполняем массивы ///
tmpk:=1; tmp1p:=n/100; tmpp:=tmp1p; zav:=1;
for i := 1 to n do
 begin
    repeat
     ind:=true;
     r:=random(n)+1;
      for j := 1 to i do
       if r = ob_M[j] then begin ind:=false;
    {case tmpk of
    100: write('|'); 200: write('/'); 300: write('-'); 400: write('\'); 500: begin write('|'); tmpk:=0; end;
    end;
    tmpk:=tmpk+1; GotoXY(43,1);}
                           end;
    until ind;
    ob_M[i]:=r; vb_M[i]:=r; vs_M[i]:=r;
    if i = tmpp then begin tmpp:=tmpp+tmp1p; GotoXY(1,2); write('Завершено: ',zav,'%'); zav:=zav+1; end;
 end;
///
writeln(' Выполнено.');
writeln;
writeln('Старт выполнения сортировки "Обменом"...');
start_ob:=Milliseconds;
/// Сортировка обменом (пузырьком) ///
tmpp:=n-1-tmp1p; zav:=1;
for ob_i:=n-1 downto 1 do {n - размер массива M[]}
begin
    for ob_j:=1 to ob_i do
        if ob_M[ob_j] > ob_M[ob_j+1] then
            begin
               ob_z:= ob_M[ob_j];
               ob_M[ob_j]:= ob_M[ob_j+1];
               ob_M[ob_j+1]:= ob_z;
    {case tmpk of
    1000: write('|'); 2000: write('/'); 3000: write('-'); 4000: write('\'); 5000: begin write('|'); tmpk:=0; end;
    end;
    tmpk:=tmpk+1; GotoXY(41,4);}
            end;
    if ob_i = tmpp then begin tmpp:=tmpp-tmp1p; GotoXY(1,5); zav:=zav+1; write('Завершено: ',zav,'%'); end;
end;
end_ob:=Milliseconds - start_ob;
writeln(',время выполнения: ',end_ob div 1000,'сек. ',end_ob  mod 1000 div 10,'мсек');
writeln;
{write('вывод значений ob_M[]: ');
for ob_i:=1 to n do
    write(ob_M[ob_i]:4);
writeln;}
///
writeln('Старт выполнения сортировки "Выбором"...');
start_vb:=Milliseconds;
/// Сортировка выбором ///
tmpp:=n-2-tmp1p; zav:=1;
 for vb_k:=n downto 2 do {k- количество элементов для поиска max }
   begin
    vb_a:=1; { m - место max }
    for vb_i:=2 to vb_k do if vb_M[vb_i]>vb_M[vb_a] then vb_a:=vb_i;
    {меняем местами элементы с номером m и номером k}
    vb_x:=vb_M[vb_a]; vb_M[vb_a]:=vb_M[vb_k]; vb_M[vb_k]:=vb_x;
    if vb_k = tmpp then begin tmpp:=tmpp-tmp1p; GotoXY(1,8); zav:=zav+1; write('Завершено: ',zav,'%'); end;
   end;
end_vb:=Milliseconds - start_vb;
writeln(',время выполнения: ',end_vb div 1000,'сек. ',end_vb  mod 1000 div 10,'мсек');
writeln;
{write('вывод значений vb_M[]: ');
for vb_i:=1 to n do
    write(vb_M[vb_i]:4);
writeln;}
///
writeln('Старт выполнения сортировки "Вставкой"...');
start_vs:=Milliseconds;
/// Сортировка вставкой ///
tmpp:=tmp1p; zav:=0;
for vs_i := 2 to n do
begin
    vs_z := vs_M[vs_i];
    vs_j := vs_i - 1;
    while (vs_j >= 1) and (vs_M[vs_j] > vs_z) do
    begin
        vs_M[vs_j + 1] := vs_M[vs_j];
        vs_j := vs_j - 1;
    end;
        vs_M[vs_j + 1] := vs_z;
    if vs_i = tmpp then begin tmpp:=tmpp+tmp1p; GotoXY(1,11); zav:=zav+1; write('Завершено: ',zav,'%'); end;
end;
end_vs:=Milliseconds - start_vs;
writeln(',время выполнения: ',end_vs div 1000,'сек. ',end_vs  mod 1000 div 10,'мсек');
writeln;
{write('вывод значений vs_M[]: ');
for vs_i:=1 to n do
    write(vs_M[vs_i]:4);
writeln; writeln;}
///
if (end_ob < end_vb) and (end_ob < end_vs) then writeln('Все сортировки выполнены! Самый быстрый метод: "Сортировка обменом"!');
if (end_vb < end_ob) and (end_vb < end_vs) then writeln('Все сортировки выполнены! Самый быстрый метод: "Сортировка Выбором"!');
if (end_vs < end_ob) and (end_vs < end_vb) then writeln('Все сортировки выполнены! Самый быстрый метод: "Сортировка Вставкой"!');
if (end_vs = end_vb) then writeln('Все сортировки выполнены! Самого быстрого метода нет!');
END.
sancheszone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из паскаля в консоль делфи Андрей.12 Помощь студентам 3 23.05.2010 15:05
Помогите переделать прогу из Паскаля в Делфи! Toxass Общие вопросы Delphi 28 27.09.2009 15:36
Проводник на делфи (переход по директориям) zotox Помощь студентам 10 14.07.2009 16:57
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Перевод из Паскаля в Делфи Родион Общие вопросы Delphi 2 28.08.2008 16:52