Program Z21; uses crt; {Вывод на экран} type matr =array [1..6,1..6] of integer; {Описание переменных} matr2=array[1..6,1..6] of integer; var a: matr; tabl:matr2; Error: integer; for_0,for_1,for_2: char; i,j, n,k: byte; ch:char; {переменная для хранения кода символа нажатой клавиши} nam_e:string; {строковый литерал} label L1; {Описание меток} {---------------Ввод значений элементов массива(имя, строки, столбцы)---------------} Procedure Mv (var n, k: byte; var nam_e: string); var error:integer; Begin {1} Gotoxy (2,3); textcolor(green); Write ('Введите имя матрицы: '); Readln (nam_e); Clrscr; Repeat {Начало цикла с постусловием} Gotoxy(4,4); textcolor(lightblue); Writeln ('Максимально допустимая размерность матрицы - 6х6 элементов'); {---------------Ввод размерности матрицы---------------} gotoxy(4,6); textcolor(lightcyan); Write('Введите количество строк матрицы: ', nam_e,': '); {$i-}; Readln (n); error:=IOresult; {$i+}; If (n<1) or (n>6) or (Error<>0) then Begin {2} Textattr:=lightred; Writeln ('Ошибка! Количество строк матрицы - от 1 до 6. Повторите ввод!'); End; {2} Until (n>=1) and (n<=6) and (Error=0); {Конец цикла с постусловием} begin {3} Repeat Gotoxy (4,8); Textattr:=cyan; Write ('Введите количество столбцов матрицы ', nam_e,': '); {$i-}; Readln (k); error:=IOresult; {$i+}; If (k<1) or (k>6) or (Error<>0) then Begin {4} Textattr:=lightred; Writeln ('Ошибка! Количество столбцов матрицы - от 1 до 6. Повторите ввод!'); End; {4} Until (k>=1) and (k<=6) and (Error=0); End; {3} end; {1} {---------------Ввод элементов матрицы (случайные числа)---------------} Function Random(n,k: byte; var A: Matr) :integer; var i,j : byte; begin {1} for i:=1 to n do begin {2} for j:=1 to k do begin {3} A[i,j]:= system.random(19)-9; write(A[i,j]:4); end;{3} end; {2} end; {4} {---------------Ввод элементов матрицы(положительные)---------------} Procedure Ml (var TABL: Matr2); var i,j: integer; begin {1} gotoxy(3,4); textattr:=yellow; writeln('Положительные элементы: '); for i:=1 to n do begin {2} for j:=1 to k do begin {3} if a[i,j]>0 then write(a[i,j]:4) else write(' ' ); TABL[i,j]:=A[i,j]; writeln; end; {3} end; {2} end; {1} {---------------Ввод элементов матрицы(отрицательные)---------------} Procedure Md ( var TABL: Matr2); var i,j: integer; begin {1} gotoxy(3,4); writeln('Отрицательные элементы: '); for i:=1 to n do begin {2} for j:=1 to k do if a[i,j]<0 then write(a[i,j]:4) else write (' '); TABL[i,j]:=A[i,j]; writeln; end; {2} readln; end; {1} {---------------Ввод элементов матрицы(Расположение исходной и преобразованной)---------------} Procedure Raspl (for_2:char); Var I,j: byte; label L1; Begin {1} clrscr; gotoxy(25,1); Textattr:=lightgreen; writeln('Исходная матрица'); Textattr:=yellow; writeln(nam_e); writeln; Textattr:=lightblue; Gotoxy (1, 3); For i:= 1 to n do begin {2} For j:=1 to k do Write (A[i,j]:5, ' '); writeln; end; {2} Case for_2 of {3} #112,#80: begin {1} gotoxy(n+38,2); {Справа от исходной} Textattr:=yellow; writeln(nam_e); writeln; window(40,3,80,15); Textattr:=lightblue; For i:=1 to n do begin {2} For j:=1 to k do Write (TABL[i,j]:5, ' '); writeln; end; {2} end; {1} #76,#108: begin {1} Textattr:=yellow; {Под исходной} Gotoxy (2,k+7); writeln(nam_e); writeln; gotoxy(1,k+10); Textattr:=lightblue; For i:= 1 to n do begin {2} For j:=1 to k do Write (TABL[i,j]:5, ' '); writeln; End; {2} end; {1} end; {3} end; {1} begin Mv (n,k,nam_e); clrscr; textattr:=magenta; Writeln ('Какие числа использовать в матрице?R-случайные,U-собственные' ); readln(for_0); case for_0 of {2} #82,#114: Random(n,k,A); #85,#117: begin {3} clrscr; textattr:=white; writeln('Введите элементы матрицы'); {Ввод элементов матрицы} for i:=1 to n do begin {4} for j:=1 to k do begin {5} repeat write ('Введите a[',i,' ',j,']'); {$i-}; readln(a[i,j]); error:=IOresult; {$i+}; If (a[i,j]<-10000) or (a[i,j]>10000) or (Error<>0) then Begin {6} Textattr:=lightred; Writeln ('Ошибка!Повторите ввод!'); End; {6} until (a[i,j]<=10000) and (a[i,j]>=-10000) ; end; {5} writeln; end; {4} end; {3} end; {2} clrscr; textattr:=lightgreen; writeln ('Какие элементы матрицы вывести? М-положительные,Q-отрицательные '); readln(for_1); case for_1 of {7} #77, #109:Ml (TABL); #81, #113:Md (TABL); end; {7} clrscr; textattr:=green; writeln('В каком виде вывести матрицы?'); textattr:=brown; writeln('Новая матрица справа от исходной-S,под исходной-L'); for_2:=readkey; clrscr; gotoxy(1,15); textattr:=lightcyan; writeln('Результат обработки: '); writeln; Raspl (for_2); window (20,24,80,25); textattr:=white; write('Хотите начать заново?Y-Да, N-нет'); window(1,1,80,25); write; case readkey of {8} #89,#121:goto L1; #78,#110:exit; end; {8} end. {1}