Алгоритм «Поразрядная сортировка»

Автор работы: Пользователь скрыл имя, 10 Декабря 2013 в 18:00, курсовая работа

Описание работы

Компьютеры являются неотъемлемой частью нашей жизни, так как мы каждый день используем их на работе, дома и во множестве других мест.
Возможности применения компьютера в учебном процессе, весьма многообразны. Он может служить для моделирования изучаемых явлений или систем, для реализации учебных игр, применяться для выполнения вычислений, для редактирования текстов, в качестве различного рода тренажеров, как инструмент автоматизации проектирования, программируемого управления экспериментами, как информационно-поисковая или экспертная система и, наконец, как средство практического обучения самой компьютерной технике и программированию.

Файлы: 1 файл

поразрядная сортировка.docx

— 137.26 Кб (Скачать файл)

     asm

        mov AH,0

        mov AL,3

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,34

        mov DH,6

        int 10h

     end;

     s:='O programme';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,26

        mov DH,8

        int 10h

     end;

     s:='>>>>>>>>>>>Kursovaya rabota Porazradnaya sortirovka<<<<<<<<';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,26

        mov DH,10

        int 10h

     end;

     s:='******************';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

 

     asm

        mov AH,2

        mov BH,0

        mov DL,36

        mov DH,18

        int 10h

     end;

     s:='>>>>>>AF RGSU<<<<<<';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,36

        mov DH,20

        int 10h

     end;

     s:='2011 god';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,26

        mov DH,24

        int 10h

     end;

     s:='Dla vihoda nachmite lubuiy knopky';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0

        int 16h

     end;

mainmenu;

end;

 

procedure B;

var

i, j: Integer;

T:string;

begin

  for i := 1 to n do

    for j := n downto i+1 Do

      if m[Pred(j)] > m[j] then begin { < }

        T := m[Pred(j)]; m[Pred(j)] := m[j]; m[j] := T

      end

end;

 

procedure MenuSpr;

var ccc:char;

begin

repeat

     asm

        mov AH,0

        mov AL,3

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,5

        int 10h

     end;

     s:='zagruzka faila..';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,6

        int 10h

     end;

{for i:=1 to n do writeln(m[i]);}

     s:='>>>>>>>>>   Obrabotka faila.......|';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,7

        int 10h

     end;

     begin

 

{   if IOResult<>0 then begin

    s:='Ошибка! Файл не найден!';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH, 0eh

        mov AL, buf

        mov BH, 0

        int 10h

     end;

     end;

     asm

        mov AH, 0eh

        mov AL, 10

        mov BH, 0

        int 10h

        mov AH, 0eh

        mov AL, 13

        mov BH, 0

        int 10h

     end;

     end

     else

    begin}

 

    end;

    {asm

       mov AH,0

       int 16h

    end;

    end;      }

{begin

assign(f,'in.txt');

reset(f);

 

{while not eof(f) do begin   

 

 

     s:='Dla vozvrata nazhmite "0"';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,40

        mov DH,22

        int 10h

     end;

     asm

        mov AH,0

        int 16h

        mov ccc,AL

     end;

     until(ccc='0');

case ccc of

'0': mainmenu

    end;

    asm

       mov AH,0

       int 16h

    end;

end;

 

 

procedure Zapvfail;

var ccc:char;

begin

repeat

     asm

        mov AH,0

        mov AL,3

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,5

        int 10h

     end;

     s:='>>>>>>>>>  Otkritie faila.........|';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,6

        int 10h

     end;

     s:='>>>>>>>>>  Zapis dannih v fail.....|';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,7

        int 10h

     end;

begin

 

end;

{   if IOResult<>0 then begin

    s:='Ошибка! Файл не найден!';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH, 0eh

        mov AL, buf

        mov BH, 0

        int 10h

     end;

     end;

     asm

        mov AH, 0eh

        mov AL, 10

        mov BH, 0

        int 10h

        mov AH, 0eh

        mov AL, 13

        mov BH, 0

        int 10h

     end;

     end

     else

    begin}

       {begin

 

for i:=1 to n do

begin

write(g,m[i],' ');

end;

    close(g);

    end;

    {asm

       mov AH,0

       int 16h

    end;

    end;      }

{begin

assign(f,'in.txt');

reset(f);

 

{while not eof(f) do begin   

 

 

 

     s:='Dla vozvrata v menu nazhmite "0"';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,40

        mov DH,22

        int 10h

     end;

     asm

        mov AH,0

        int 16h

        mov ccc,AL

     end;

     until(ccc='0');

case ccc of

'0': mainmenu

    end;

    asm

       mov AH,0

       int 16h

    end;

end;

 

 

procedure schit;

begin

assign(f,'vhodnie.txt'); reset(f);

assign(g,'vihodnie.txt'); rewrite(g);

 

while not eof(f) do begin    {считываем ВЕСЬ файл}

readln(f,ks);    {считываем  очередную строку}

ic:=0;  {ставим счётчик  слов на 0}

 

repeat     {*********предложение  разбиваем на слова и записываем  в массив}

inc(ic); {увеличиваем счётчик  текущего ПРЕДЛОЖЕНИЯ}

p:=pos(' ',ks);  {смотрим где  находится пробел}

m[ic]:=copy(ks,1,p-1);  {записываем  текущее слово в массив}

delete(ks,1,p); {то слово, которое  заприсали в массив - удаляем}

until p=0; {****************}

 

n:=ic+1;   {конец массива}

if s[length(ks)]='.' then  {если строчка  заканчивается точкой}

begin m[n]:=copy(ks,1,length(ks)-1); m[1]:=m[1]+'.' {то эту точку перемещаем на 1 слово}

end else m[n]:=ks;  {а если нет  точки - то просто его записываем  в массив}

writeln(g);;

for i:=5 downto 1 do write(g,gf[i],' '); {идём  с конца массива в начало  и записываем слова в обратном  порядке}

end;

close(f);  close(g);

MenuSpr;

end;

 

 

procedure schit2;

begin

assign(f,'vhodnie.txt'); reset(f);

assign(g,'vihodnie.txt'); rewrite(g);

 

while not eof(f) do begin    {считываем ВЕСЬ файл}

readln(f,ks);    {считываем  очередную строку}

ic:=0;  {ставим счётчик  слов на 0}

 

repeat     {*********предложение  разбиваем на слова и записываем  в массив}

inc(ic); {увеличиваем счётчик  текущего ПРЕДЛОЖЕНИЯ}

p:=pos(' ',ks);  {смотрим где  находится пробел}

gf[ic]:=copy(ks,1,p-1);  {записываем  текущее слово в массив}

delete(ks,1,p); {то слово, которое  заприсали в массив - удаляем}

until p=0; {****************}

 

n:=ic+1;   {конец массива}

if s[length(ks)]='.' then  {если строчка  заканчивается точкой}

begin gf[n]:=copy(ks,1,length(ks)-1); gf[1]:=gf[1]+'.' {то эту точку перемещаем на 1 слово}

end else gf[n]:=ks;  {а если нет  точки - то просто его записываем  в массив}

writeln(g);;

for i:=1 to n do write(g,m[i],' '); {идём  с конца массива в начало  и записываем слова в обратном  порядке}

end;

close(f);  close(g);

end;

 

 

 

procedure zapis;

begin

schit2;

  begin

  zapvfail;

  end;

end;

 

 

 

procedure RazSort;

begin

 

{asm

  dec n

 

@CycleExt:

  xor ebx, ebx

  mov ecx, n

  mov esi, 0

 

@CycleIn:

  mov edi, M[esi]

  cmp edi, M[esi+4]

  jg @Exchange

  add esi, 4

  loop @CycleIn

  jmp @Check

 

@Exchange:

  mov ebx, M[esi+4]

  mov M[esi+4], edi

  mov M[esi], ebx

  add esi, 4

  loop @CycleIn

 

@Check:

  cmp ebx, 0

  je @Exit

  jmp @CycleExt

 

@Exit:  }

end;

 

 

 

 

procedure sort;

var ccc:char;

begin

     asm

        mov AH,0

        mov AL,3

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,5

        int 10h

     end;

     s:='Sortiruem..';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,5

        mov DH,6

        int 10h

     end;

begin

B;

end;

 

{   if IOResult<>0 then begin

    s:='Ошибка! Файл не найден!';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH, 0eh

        mov AL, buf

        mov BH, 0

        int 10h

     end;

     end;

     asm

        mov AH, 0eh

        mov AL, 10

        mov BH, 0

        int 10h

        mov AH, 0eh

        mov AL, 13

        mov BH, 0

        int 10h

     end;

     end

     else

    begin}

       {begin

 

for i:=1 to n do

begin

write(g,m[i],' ');

end;

    close(g);

    end;

    {asm

       mov AH,0

       int 16h

    end;

    end;      }

{begin

assign(f,'in.txt');

reset(f);

 

{while not eof(f) do begin   

repeat

 

 

     s:='Otsortirovan.Dla vozvrata nazhmite "0"';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,40

        mov DH,22

        int 10h

     end;

     asm

        mov AH,0

        int 16h

        mov ccc,AL

     end;

     until(ccc='0');

case ccc of

'0': mainmenu

    end;

    asm

       mov AH,0

       int 16h

    end;

end;

 

 

 

 

procedure MainMenu;

var a:char;

begin

repeat

     asm

        mov AH,0

        mov AL,3

        int 10h

     end;

     asm

       mov AH,2

       mov BH,0

       mov DL,40

       mov DH,7

       int 10h

     end;

     s:='Glavnoe menu';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0eh

        mov AL,10

        mov BH,0

        int 10h

        mov AH,0eh

        mov AL,13

        mov BH,0

        int 10h

     end;

     asm

       mov AH,2

       mov BH,0

       mov DL,35

       mov DH,10

       int 10h

    end;

    s:='** 1) - Zagruzit ishodnie dannie **';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0eh

        mov AL,10

        mov BH,0

        int 10h

        mov AH,0eh

        mov AL,13

        mov BH,0

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,35

        mov DH,12

        int 10h

     end;

     s:='** 2) - Vipolnit Sortirovky **';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0eh

        mov AL,10

        mov BH,0

        int 10h

        mov AH,0eh

        mov AL,13

        mov BH,0

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,35

        mov DH,14

        int 10h

     end;

     s:='** 3) - Sohranit rezultati **';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0eh

        mov AL,10

        mov BH,0

        int 10h

        mov AH,0eh

        mov AL,13

        mov BH,0

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,35

        mov DH,16

        int 10h

     end;

     s:='** 4) - Copyright **';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0eh

        mov AL,10

        mov BH,0

        int 10h

        mov AH,0eh

        mov AL,13

        mov BH,0

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,35

        mov DH,18

        int 10h

     end;

      s:='** 0) - Vihod v windows **';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0eh

        mov AL,10

        mov BH,0

        int 10h

        mov AH,0eh

        mov AL,13

        mov BH,0

        int 10h

     end;

     asm

        mov AH,2

        mov BH,0

        mov DL,30

        mov DH,24

        int 10h

     end;

      s:='>>>>>Viberite punkt menu<<<<<';

     lng:=length (s);

     for i:= 1 to lng do

     begin

     buf:=s[i];

     asm

        mov AH,0eh

        mov AL,buf

        mov BH,0

        int 10h

     end;

     end;

     asm

        mov AH,0eh

        mov AL,10

        mov BH,0

        int 10h

        mov AH,0eh

Информация о работе Алгоритм «Поразрядная сортировка»