Сортировка столбцов ТР
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Помогите пожалуйста...
нужно решить задачку и я не понимаю, как при сортировке двумерного массива переставлять столбцы целиком...
то есть как производится сортировка массива в массиве...
нужно решить задачку и я не понимаю, как при сортировке двумерного массива переставлять столбцы целиком...
то есть как производится сортировка массива в массиве...
По какому признаку производится сортировка?
Ни что так не ограничивает фантазию программиста, как компилятор...
в каждом столбце нужно посчитать среднее арифметическое и затем переставить столбцы по возрастанию этого среднего арифметического
Вот процедура, меняющая местами столбцы 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 - одномерный массив с размерностью, равной резмерности столбца.
[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 - одномерный массив с размерностью, равной резмерности столбца.
Ни что так не ограничивает фантазию программиста, как компилятор...
спасибо... сейчас попробую сделать....
я все-таки запуталась... не получается правильно применить эту сортировку... все время ошибки выдает..(((
вот основа программы... а как туда засунуть сортировку эту? помогите, плииз....
вот основа программы... а как туда засунуть сортировку эту? помогите, плииз....
Код: Выделить всё
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.
Нужно объявить массив B1 как B1:Array [1..N,1..M] of integer; и массив A как Array [1..N] of integer;.
В процедуре замены нужно заменить A1 на B1, A2 на A.
В процедуре замены нужно заменить A1 на B1, A2 на A.
Ни что так не ограничивает фантазию программиста, как компилятор...
ок, это я поняла)
но у меня немножко в другом проблема...
я когда после этих циклов ставлю условие...
if srarifm [j]>srarifm[j+1]
он мне ошибку выдает....
и... я не совсем понимаю, что вместо idx1 и idx2 писать....
но у меня немножко в другом проблема...
я когда после этих циклов ставлю условие...
if srarifm [j]>srarifm[j+1]
он мне ошибку выдает....
и... я не совсем понимаю, что вместо idx1 и idx2 писать....
Если srarifm - функция, выдающая среднее арифметическое элементов столбца, то аргумент надо писать в круглых скобках, а не квадратных. А если это массив, то его все равно придется пересчитывать после перестановки столбцов
Вместо idx1 и idx2 подставляются номера переставляемых столбцов
Вместо idx1 и idx2 подставляются номера переставляемых столбцов
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
srarifm здесь вообще как Integer объявлено.
Можно, конечно, составить массив средних арифметических, но тогда элементы в нем тоже придется перемещать, лучше просто просчитывать его в процедуре сортировки.
Можно, конечно, составить массив средних арифметических, но тогда элементы в нем тоже придется перемещать, лучше просто просчитывать его в процедуре сортировки.
Ни что так не ограничивает фантазию программиста, как компилятор...