Страница 1 из 3
Сортировка столбцов ТР
Добавлено: 22 май 2008, 19:48
Anuta
Помогите пожалуйста...
нужно решить задачку и я не понимаю, как при сортировке двумерного массива переставлять столбцы целиком...
то есть как производится сортировка массива в массиве...
Re: Сортировка столбцов ТР
Добавлено: 22 май 2008, 19:57
MOTOCoder
По какому признаку производится сортировка?
Re: Сортировка столбцов ТР
Добавлено: 22 май 2008, 20:02
Anuta
в каждом столбце нужно посчитать среднее арифметическое и затем переставить столбцы по возрастанию этого среднего арифметического
Re: Сортировка столбцов ТР
Добавлено: 22 май 2008, 20:11
MOTOCoder
Вот процедура, меняющая местами столбцы idx1 и idx2.
[syntax='Delphi']
procedure Exchange(Idx1,Idx2:integer);
var
I:integer;
begin
for i:=1 to n do
A2:=A1[Idx2,i];
for i:=1 to N do
A1[Idx2,i]:=A1[Idx1,i];
for i:=1 to N do
A1[Idx1,i]:=A2;
end;
[/syntax]
A1-матрица, A2 - одномерный массив с размерностью, равной резмерности столбца.
Re: Сортировка столбцов ТР
Добавлено: 22 май 2008, 20:13
Anuta
спасибо... сейчас попробую сделать....
Re: Сортировка столбцов ТР
Добавлено: 22 май 2008, 23:33
Anuta
я все-таки запуталась... не получается правильно применить эту сортировку... все время ошибки выдает..(((
вот основа программы... а как туда засунуть сортировку эту? помогите, плииз....
Код: Выделить всё
Program anuta;
uses crt;
const n=5; m=7;
type A1=array [1..5] of integer;
B1=array [1..7] of A1;
C1=array [1..7] of integer;
var srarifm,i,j,sum: integer;
a:A1; b:B1; c:C1;
begin
clrscr;
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
b[i,j]:=random(10);
Write (b[i,j]:4);
end; writeln; end;
for j:=1 to m do begin
sum:=0;
srarifm:=0;
for i:=1 to n do begin
sum:=sum+b[i,j];
srarifm:=sum div n;
end;
write ('srarifm [',j,']= ',srarifm:5);
writeln; end;
readln;
end.
Re: Сортировка столбцов ТР
Добавлено: 22 май 2008, 23:50
MOTOCoder
Нужно объявить массив B1 как B1:Array [1..N,1..M] of integer; и массив A как Array [1..N] of integer;.
В процедуре замены нужно заменить A1 на B1, A2 на A.
Re: Сортировка столбцов ТР
Добавлено: 23 май 2008, 00:36
Anuta
ок, это я поняла)
но у меня немножко в другом проблема...
я когда после этих циклов ставлю условие...
if srarifm [j]>srarifm[j+1]
он мне ошибку выдает....
и... я не совсем понимаю, что вместо idx1 и idx2 писать....
Re: Сортировка столбцов ТР
Добавлено: 23 май 2008, 11:17
Хыиуду
Если srarifm - функция, выдающая среднее арифметическое элементов столбца, то аргумент надо писать в круглых скобках, а не квадратных. А если это массив, то его все равно придется пересчитывать после перестановки столбцов
Вместо idx1 и idx2 подставляются номера переставляемых столбцов
Re: Сортировка столбцов ТР
Добавлено: 23 май 2008, 19:45
MOTOCoder
srarifm здесь вообще как Integer объявлено.
Можно, конечно, составить массив средних арифметических, но тогда элементы в нем тоже придется перемещать, лучше просто просчитывать его в процедуре сортировки.