PDA

Просмотр полной версии : Упорядочивания матрицы



KreN.del
14.12.2006, 18:33
Требования:
1)Как console apllication
2)Использовать, пока только то что прошли, а тоесть массивы и циклы
Задача:
Дана целочисленная матриц А(n,m).Упорядочить по возрастанию элементы каждого столбца матрицы.

Хыиуду
15.12.2006, 10:53
Делаешь цикл по каждому столбцу
В цикле каждый элемент столбца переписать в массив
Упорядочить массив любым методом, которых несколько сотен. Самый банальный - сортировка пузырьком
Переписать упорядоченный массив в соответствующий столбец матрицы

KreN.del
18.12.2006, 00:32
Ребят вот какой-то код наваял.. Ошибка в просчете появляется лишь в некоторых столбцах...
Немогли ли вы мне баг мой найти?
var
x:TDarr;
i,j,n,m,d,max,imax,c,z:integer;
begin
write('kol-vo ctroc=');
readln(n);
write('kol-vo ctolbcov=');
readln(m);
setlength(x,n,m);
for i:=0 to n-1 do
for j:=0 to m-1 do
read(x[i][j]);
for j:=0 to m-1 do
for i:=0 to n-1 do
for d:=1 to n-1 do
begin
max:=x[0][0];
imax:=0;
for c:=0 to n-d do
if(x[c][j]>max)then
begin
max:=x[c][j];
imax:=c;
end;
x[imax][j]:=x[n-d][j];
x[n-d][j]:=max;
end;
//вывод построчно
for i:=0 to n-1 do
begin
writeln;
for j:=0 to m-1 do
write(x[i][j],' ');
end;
readln;
readln;
end.

Oleg_Rus
20.12.2006, 04:00
ну я прям не знаю, что делать.

попробуй циклы организовывать от 1 до n и m, хотя тут косяка быть не должно, но ты попробуй...

shpi0
21.12.2006, 14:48
С паскалем помочь не могу, если поможет - вот код на Си.

int i,j,k,tmp;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
for (k=j;k<n;k++)
{
if (A[j][i]>A[k][i])
{
tmp=A[j][i];
A[j][i]=A[k][i];
A[k][i]=tmp;
}
}
}
}

хотя щас попробую на паскаль перевести :)


const n=10;
const m=10;
var i,j,k,tmp: integer;
var A:array[n][m] of integer;
begin
{ -- Здесь вводи массив А с клавиатуры либо рандомно заполняй его -- }
for i = 0 to m-1 do
begin
for j = 0 to n-1 do
begin
for k = j to n-1 do
begin
tmp:=A[j][i];
A[j][i]:=A[k][i];
A[k][i]:=tmp;
end;
end;
end;
end.