uses crt;
const m=8;
type aType=array[1..m,1..m] of integer;
var a:aType;
n:integer;
procedure InputMas(var a:aType; n:integer);
var i,j:integer;
begin
randomize;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(90)+10;
end;
procedure ChangeMas(var a:aType);
var imax,t,i,j,n,k:integer;
begin
writeln;
for i:=1 to n do
for j:=1 to n do
begin
for i:=1 to n do
begin
imax:=j;
for k:=j+1 to n do
if a[i,k]<a[i,imax] then
imax:=k;
t:=a[i,j];
a[i,j]:=a[i,imax];
a[i,imax]:=t;
end;
end;
end;
procedure PrintMas(const a:aType; n:integer);
var i,j:integer;
begin
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(a[i,j]:4);
end;
end;
procedure Okno(x1,y1,x2,y2,cf,ct:Byte);
begin
Window(x1,y1,x2,y2);
TextBackGround(cf);
TextColor(ct);
clrscr
end;
BEGIN
okno(1,1,110,85,0,15);
Okno(2,1,77,3,1,15);
write('Работу выполнил:');
Okno(2,4,77,6,1,15);
write('Задание: отсортировать по возрастанию методом выбора максимума.');
writeln;
Okno(2,8,77,10,4,15);
repeat
write('Введите размер матрицы 1-8:'); readln(n);
until n<10;
Okno(2,12,38,24,13,15);
InputMas(a,n);
writeln(' Исходная матрица: ');
PrintMas(a,n);
ChangeMas(a);
Okno(40,12,77,24,10,15);
writeln(' Отсортированная матрица: ');
PrintMas(a,n);
readkey;
END.
Сортировка матрицы
1 9 3 8 7 5 9 2
2 4 8 9 6 3 2 5
...
5 4 4 5 8 2 1 3
чтобы получилось так:
9 8 3 1 2 5 7 9
9 8 4 2 2 3 5 6
...
5 5 4 4 1 2 3 8
Помогите исправить программу, чтобы получилось так!
Код:
uses crt;
const m=8;
type aType=array[1..m,1..m] of integer;
var a:aType;
n:integer;
procedure InputMas(var a:aType; n:integer);
var i,j:integer;
begin
randomize;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(90)+10;
end;
procedure ChangeMas(var a:aType);
var imax,t,i,j,n,k:integer;
begin
writeln;
for i:=1 to n do
for j:=1 to n do
begin
for i:=1 to n do
begin
imax:=j;
for k:=j+1 to n do
if a[i,k]<a[i,imax] then
imax:=k;
t:=a[i,j];
a[i,j]:=a[i,imax];
a[i,imax]:=t;
end;
end;
end;
procedure PrintMas(const a:aType; n:integer);
var i,j:integer;
begin
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(a[i,j]:4);
end;
end;
procedure Okno(x1,y1,x2,y2,cf,ct:Byte);
begin
Window(x1,y1,x2,y2);
TextBackGround(cf);
TextColor(ct);
clrscr
end;
BEGIN
okno(1,1,110,85,0,15);
Okno(2,1,77,3,1,15);
write('Работу выполнил:');
Okno(2,4,77,6,1,15);
write('Задание: отсортировать по возрастанию методом выбора максимума.');
writeln;
Okno(2,8,77,10,4,15);
repeat
write('Введите размер матрицы 1-8:'); readln(n);
until n<10;
Okno(2,12,38,24,13,15);
InputMas(a,n);
writeln(' Исходная матрица: ');
PrintMas(a,n);
ChangeMas(a);
Okno(40,12,77,24,10,15);
writeln(' Отсортированная матрица: ');
PrintMas(a,n);
readkey;
END.
Заранее спасибо!!!
Пункт 6 правил. Поверьте, желание помогать пропадает. Пока не оформите код смотреть не буду, уж не обижайтесь. Когда оформите - напишите сразу что именно не получается, в чем проблемы.
Читаем
Присоединяюсь. Опишите конкретно, что именно вам не понятно.
У меня идёт матрица просто по возрастанию в программе, а я хочу, чтобы половина строки шла на убывание, а вторая половина - на возрастание. Например: 4 5 7 1 2 3 6 5, должно получиться 7 5 4 1 2 3 5 6 и так во всей матрице.
Неплохо было бы откаментировать код.