Обработка данных средствами языка Turbo Pascal. Модули (Отчет по лабораторной работе № 20)

Страницы работы

Содержание работы

Министерство образования Республики Беларусь

Учреждение образования «Гомельский государственный университет имени

Франциска Скорины»

Физический факультет

Кафедра радиофизики и электроники

Отчет

по лабораторной работе № 20

ОБРАБОТКА ДАННЫХ СРЕДСТВАМИ

ЯЗЫКА TURBO PASCAL, МОДУЛИ

Выполнил

студент группы Ф-11                                                                 В. Н. Олифенко

Проверил

доцент кафедры общей физики                                                В. В. Свиридова

Гомель 2009

Цель: получить практические навыки работы с информацией с использованием средств Turbo Pascal – модулей.

Задание: Дан двумерный массив, отсортировать его с помощью процедур на выбор по столбцам/строкам всеми простыми методами сортировки, использовать модули для доступа к процедурам.

Модуль:

unit modul;

Interface

type

  mas = array[1..20,1..20] of byte;

var

  a: mas;

  i,j,n,m: byte;

  sposob: 1..4;

  nevozrast, po_stolb: char;

procedure drob(n,m: byte; var a: mas; nevozrast,po_stolb: char);

procedure drobflag(n,m : byte; var a : mas; nevozrast,po_stolb : char);

procedure vstavka(n,m:byte; var a:mas; nevozrast,po_stolb:char);

procedure obmen(n,m:byte; var a:mas;nevozrast,po_stolb:char);

implementation

uses crt;

procedure drob;

var

  k: byte;

  buf: byte;

begin

  if nevozrast='y' then

    if po_stolb='y' then

      begin

        for k:=1 to m do

        for i:=1 to n-1 do

        for j:=i to n-1 do

        if a[j+1,k]>a[j,k] then

         begin

          buf:=a[j,k];

          a[j,k]:=a[j+1,k];

          a[j+1,k]:=buf

         end

      end

    else

      begin

        for k:=1 to n do

        for i:=1 to m-1 do

        for j:=i to m-1 do

        if a[k,j+1]>a[k,j] then

         begin

          buf:=a[k,j];

          a[k,j]:=a[k,j+1];

          a[k,j+1]:=buf

         end

      end

  else

    if po_stolb='y' then

      begin

       for k:=1 to m do

       for i:=1 to n-1 do

       for j:=i to n-1 do

       if a[j+1,k]<a[j,k] then

        begin

         buf:=a[j,k];

         a[j,k]:=a[j+1,k];

         a[j+1,k]:=buf

         end

      end

    else

      begin

        for k:=1 to n do

        for i:=1 to m-1 do

        for j:=i to m-1 do

        if a[k,j+1]<a[k,j] then

         begin

          buf:=a[k,j];

          a[k,j]:=a[k,j+1];

          a[k,j+1]:=buf

         end

      end

end;

procedure drobflag;

var

  k, buf : byte;

  switch : boolean;

begin

  if nevozrast = 'y' then

    if po_stolb = 'y' then

      begin

        for k:=1 to m do

        repeat

        switch:=false;

        for i:=1 to n-1 do

        if a[i+1,k]>a[i,k] then

         begin

         switch:=true;

         buf:=a[i + 1,k];

         a[i+1,k]:=a[i,k];

         a[i,k]:=buf

         end

        until not switch

      end

    else

      begin

        for k:=1 to n do

        repeat

        switch:=false;

        for i:=1 to m-1 do

        if a[k,i+1]>a[k,i] then

         begin

          switch:=true;

          buf:=a[k,i + 1];

          a[k,i+1]:=a[k,i];

          a[k,i]:=buf

         end

        until not switch

      end

  else

    if po_stolb='y' then

      begin

       for k:=1 to m do

       repeat

       switch:=false;

       for i:=1 to n-1 do

       if a[i+1,k]<a[i,k] then

        begin

         switch:=true;

         buf:=a[i+1,k];

         a[i+1,k]:=a[i,k];

         a[i,k]:=buf

        end

       until not switch

      end

    else

      begin

        for k:=1 to n do

        repeat

        switch:=false;

        for i:=1 to m-1 do

        if a[k,i+1]<a[k,i] then

         begin

          switch:=true;

          buf:=a[k,i+1];

          a[k,i+1]:=a[k,i];

          a[k,i]:=buf

         end

        until not switch

Похожие материалы

Информация о работе