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.