Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка матрицы

52K
01 декабря 2009 года
Nik47
4 / / 01.12.2009
Здравствуйте! Мне нужно отсортировать по возрастанию методом выбора максимума матрицу. Дана матрица к примеру:

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.

Заранее спасибо!!!
416
01 декабря 2009 года
MaitreDesir
380 / / 02.01.2008
Читаем Пункт 6 правил. Поверьте, желание помогать пропадает. Пока не оформите код смотреть не буду, уж не обижайтесь. Когда оформите - напишите сразу что именно не получается, в чем проблемы.
36K
01 декабря 2009 года
Sonia
74 / / 21.05.2009
Присоединяюсь. Опишите конкретно, что именно вам не понятно.
52K
01 декабря 2009 года
Nik47
4 / / 01.12.2009
У меня идёт матрица просто по возрастанию в программе, а я хочу, чтобы половина строки шла на убывание, а вторая половина - на возрастание. Например: 4 5 7 1 2 3 6 5, должно получиться 7 5 4 1 2 3 5 6 и так во всей матрице.

Код:
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.
48K
11 декабря 2009 года
Fylh_if
5 / / 25.04.2009
Неплохо было бы откаментировать код.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог