Смекни!
smekni.com

Автоматизированная система обработки структур данных (стр. 3 из 3)

writeln;

end;

end;

{Процедура поиска максимального значения матрицы}

procedure poiskmax(A1: Matr; n1: integer; var k1,l1: byte);

var i,j: byte; max: real;

begin

max: =abs(A1 [i,1]);

for i: =1 to n1 do begin

for j: =1 to n1 do

if abs(A1 [i,j]) >max then begin

k1: =i;

l1: =j;

max: =A1 [k1,l1]

end

end

end;

{Процедура перестановки соседних двух строк и соседних двух столбцов местами}

procedure perestanovka(var A1: Matr; n1,k1,l1: integer);

var t: real; i,j: byte;

begin

if (k1<>1) then

for j: =1 to n1 do begin

t: =A1 [1,j] ;

A1 [1,j]: =A1 [k1,j] ;

A1 [k1,j]: =t;

end;

if (l1<>1) then

for i: =1 to n1 do begin

t: =A1 [i,1] ;

A1 [i,1]: =A1 [i,l1] ;

A1 [i,l1]: =t

end

end;

{Процедура вывода на экран преобразованной матрицы}

procedure vyvod1 (A1: Matr; n1: integer);

var i,j: byte;

begin

writeln('Преобразованная матрица');

for i: =1 to n1 do begin

for j: =1 to n1 do

write(A1 [i,j]: 5: 4,' ');

writeln

end

end;

end.

Модуль zad3

unit zad3;

interface

uses crt;

Const {определение констант размерности массива}

m2 = 50;

n2 = 50;

Type{определение типа двумерного массива}

Mat = array [1. . m2,

1. . n2] Of Real;

{Определение используемых процедур}

Procedure vvod3 (Var A: Mat; Var m, n: Integer);

procedure obrab1(var A: Mat; var C: Mat; m,n: integer);

procedure vyvod2 (C: Mat; m,n: integer);

implementation

{Процедура ввода размерности и элементов матрицы, а также вывода её на экран}

Procedure vvod3 (Var A: Mat; Var m, n: Integer);

Var

i, j: Byte;

Begin

Repeat

WriteLn('Введите размеры матрицы');

ReadLn(m);

ReadLn(n);

Until (m>1) AND (n>1) AND (m<=100) AND (n<=100);

For i: =1 To m Do

For j: =1 To n Do Begin

WriteLn('Введите элементы матрицы A [', i,',',j,'] ');

ReadLn(A [i,j]);

End;

clrscr;

WriteLn('Исходная матрица');

For i: =1 To m Do Begin

For j: =1 To n Do Begin

write(A [i,j]: 5: 4,' ');

end;

writeln;

end;

End;

{Процедура суммирования элементов массива, граничных с текущим}

procedure obrab1(var A: Mat; var C: Mat; m,n: integer);

var i,j: byte;

begin

for i: =2 to m-1 do

for j: =2 to n-1 do

C [i,j]: =A [i-1,j-1] +A [i,j-1] +A [i+1,j-1] +A [i-1,j] +A [i+1,j] +A [i-1,j+1] +A [i,j+1] +A [i+1,j+1] ;

for j: =1 to n do begin

C [1,j]: =A [1,j] ;

C [m,j]: =A [m,j]

end;

for i: =2 to m-1 do begin

C [i,1]: =A [i,1] ;

C [i,n]: =A [i,n]

end;

end;

{Процедура вывода преобразованной матрицы}

procedure vyvod2 (C: Mat; m,n: integer);

var i,j: byte;

begin

writeln('Преобразованная матрица');

for i: =1 to m do begin

for j: =1 to n do

write(C [i,j]: 5: 4,' ');

writeln

end

end;

end.

Модуль zad4

unit zad4;

interface

uses crt;

const{определение константы размерности массива}

n_max=15;

type {Определение типа запись}

Tabliza=record

nomer,data: byte;

tovar: string [20] ;

srok: integer;

stoim: real

end;

spisok=array [1. . n_max] of Tabliza;

{Определение используемых процедур}

procedurevvod2(vard: spisok);

procedure sort(var d: spisok);

procedure vyvod3(d: spisok);

implementation

{Процедура считывания данных из файла}

procedure vvod2(var d: spisok);

var

i: byte;

f: text;

res: integer;

fname: string [80] ;

otv: char;

begin

assign(f,'tab. pas');

fname: ='tab. pas';

{$I-}

reset(f); { открыть файл для чтения }

{$I+}

res: =IOResult;

if res<>0 then

begin

writeln('ОШИБКА: файл ',fname, ' не найден');

writeln('Для продолжения нажмите Enter');

readln;

halt;

end;

readln(f);

for i: =1 to 15 do begin

read(f,d [i]. nomer);

read(f,d [i]. tovar);

read(f,d [i]. data);

read(f,d [i]. srok);

read(f,d [i]. stoim);

end;

close(f);

end;

{Процедура сортировки данных по дате}

procedure sort(var d: spisok);

var i,j: byte; t: tabliza;

begin

t: =d [1] ;

for i: =2 to 15 do

for j: =15 downto i do

if d [j-1]. data>d [j]. data then begin

t: =d [j-1] ;

d [j-1]: =d [j] ;

d [j]: =t

end

end;

{Процедура записи отсортированных данных в файл}

procedure vyvod3(d: spisok);

var

i: byte;

f1: text;

begin

assign(f1,'sort_tab. pas');

rewrite(f1);

writeln(f1,'nomer tovar data srok stoimost');

for i: =1 to 15 do begin

write(f1,d [i]. nomer);

write(f1,d [i]. tovar);

write(f1,d [i]. data: 3);

write(f1,d [i]. srok: 5);

write(f1,d [i]. stoim: 8: 0);

writeln(f1);

end;

close(f1);

end;

end.

Основная программа

Programauto;

{Подключение вышеописанных модулей}

Usescrt,zad1,zad2,zad3,zad4;

var

A_,C_: Matrix;

A1_: Matr;

A2_,C2_: Mat;

b_: Massiv;

k_,W,m_, n_: Integer;

g_,l_: byte;

d_: spisok;

f_: text;

BEGIN

clrscr;

W: =1;

While W<>6 do begin

{формирование пунктов меню программы}

gotoxy(5,3); write('Автоматизированная система обработки структур данных');

gotoxy(15,9); write('1. Задача 1');

gotoxy(15,11); write('2. Задача 2');

gotoxy(15,13); write('3. Задача 3');

gotoxy(15,15); write('4. Задача 4');

gotoxy(15,17); write('5. Выход');

gotoxy(1, 19); write('Выберите дальнейший режим работы: ');

{Выбор нужного пункта программы}

readln(k_);

case k_ of

1: begin

clrscr;

vvod(A_, m_, n_);

obrab(A_, m_, n_, b_);

vyvod(A_,b_, m_,n_);

writeln('Для продолжения нажмите Enter');

readln;

end;

2: begin

clrscr;

vvod1(A1_,n_);

poiskmax(A1_,n_,g_,l_);

perestanovka(A1_,n_,g_,l_);

vyvod1(A1_,n_);

writeln('Для продолжения нажмите Enter');

readln;

end;

3: begin

clrscr;

vvod3(A2_,m_,n_);

obrab1(A2_,C2_,m_,n_);

vyvod2(C2_,m_,n_);

writeln('Для продолжения нажмите Enter');

readln;

end;

4: begin

clrscr;

vvod2(d_);

sort(d_);

vyvod3(d_);

writeln('Результат записан в файл sort_tab. pas. ');

writeln('Для продолжения нажмите Enter');

readln;

end;

5: W: =6;

end;

clrscr;

end;

END.