Код:
program Rab;
Uses Crt;
Type
strmenu=record
x: integer;
s: string[14];
end;
Const
kol=4;
mas:array[1..kol] of strmenu=
((x:6; s:'Ввод данных'),
(x:20; s:'Сортировка'),
(x:33; s:'Вывод данных'),
(x:48; s:'Выход'));
const
nmax=20;
Var
N1, i, max, min, raz, j, x, k, r, w, o,o1, q: integer;
a:array[1..nmax,1..nmax] of integer;
b:array[1..190] of integer;
z: integer;
pv,ps: integer;
n: integer;
count: integer;
ch: char;
M: integer;
Pwwod, Psort :byte;
procedure InputDan;
label M1;
Begin
clrscr;
Writeln('Размер матрицы от 1 до ',nmax,' n=');
Readln(N1);
clrscr;
writeln('Введите пункт меню');
writeln('1. Автоматический ввод');
writeln('2. Ручной ввод');
writeln('3. Выхож');
M1: writeln('Введите пункт меню');
readln(z);
case z of
1: begin
pv:=0;
begin
randomize;
for i:=1 to N1 do
for j:=1 to N1 do
a[j,i]:=random (99)+1;
end;
pv:=1;
writeln('Матрица заполнена');
end;
2: begin
pv:=0;
for i:=1 to N1 do
for j:=1 to N1 do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
pv:=1;
end;
3: exit
end;
goto M1;
end;
procedure SortDan;
Begin
clrscr;
if pv=1 then begin
o:=0;
for o1:=1 to N1 do begin
o:=o+o1-1;
end;
r:=1;
for i:=1 to N1 do
for j:=1 to N1 do
if (i<j) then begin
b[r]:=a[i,j];
r:=r+1;
end;
for q:=1 to o-1 do
for r := 1 to o-q do
if b[r] < b[r+1] then begin
w := b[r];
b[r] := b[r+1];
b[r+1] := w;
end;
ps:=1;
writeln('Сортировка данных прошла успешно');
end
else writeln('Данные не введены');
writeln('Для выхода в меню нажмите Enter');
readln;
end;
procedure OutputDan;
Begin
clrscr;
if pv=1 then begin
writeln('Исходные данные');
for i:=1 to N1 do
begin
for j:=1 to N1 do
write(a[i,j]:6);
writeln
end;
if ps=1 then begin
writeln('Результат сортировки');
for r:=1 to o do
begin
write(' ',b[r]);
end;
writeln;
end
else
writeln('Сортировка не проведена ');
repeat
writeln('Введите номер строки и столбца для обмена от 1 до ',N1);
readln(k);
until k in [1..n1];
for i:=1 to n1 do
begin
x:=a[k,i];
a[k,i]:=a[i,k];
a[i,k]:=x;
end;
writeln('Обмен строки и столбца',k);
for i:=1 to n1 do
begin
for j:=1 to n1 do
write(a[i,j]:4);
writeln;
end;
readln
end;
writeln('Для выхода в меню нажмите Enter');
readln;
end; Begin
n:=1;
repeat
textattr:=7;
clrscr;
for i:=1 to kol do
begin
gotoxy(mas[i].x,3);
write(mas[i].s);
end;
textattr:=87;
gotoxy(mas[n].x,3);
write(mas[n].s);
ch:=readkey;
case ch of
#13: case n of
1: InputDan;
2: SortDan;
3: OutputDan;
end;
#0:begin
ch:=readkey;
case ch of
#77:if n<kol then
n:=n+1
else
n:=1;
#75:
if n>1 then
n:=n-1
else
n:=kol;
end;
end;
end;
until(ch=#13)and(n=4)or(ch=#27);
textattr:=7;
clrscr;
end.
Развернуто,как возможно,заранее благодарен
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.