Матрица

  • Автор темы NemoI3
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

NemoI3

Гость
#1
Заданы две матрицы A=[1..3, 1..3], B=[1..4, 1..4]/
Расставить в порядке возрастания элементы в каждой строке матрицы, затем получить сумму элементов последнего столбца в каждой матрице. Расстановку элементов в порядке возрастания оформить в виде подпрограммы.
Исходные данные:

A=((1.8, 3.4, -1.5), (3.1, 0, 2.1), (0.25, 4, 1.1));
B=((1,0.8,2.5,-1),(2.1,0.3,3.1,1.5),(2.5,0.33,2.1,5),(6.4,1.3,0.25,1));



Код:
Type mass1=array[1..3,1..3]of real;
Type mass2=array[1..4,1..4]of real;
Type mass3=array of real;

procedure TForm1.Button1Click(Sender: TObject);

procedure vozr(n:integer; var x:mass1);
var i,j:integer; t:real;
begin
for i:=1 to n-1 do
for j:=1 to n do
if (x[i,j]<x[i,j+1]) then begin
t:=x[i,j]; x[i,j]:=x[i,j+1]; x[i,j+1]:=t; end;
end;

var i,j,m,l:integer; v:mass1; c:mass2; 
const a1:mass1=((1.8, 3.4, -1.5), (3.1, 0, 2.1), (0.25, 4, 1.1));
b1:mass2=((1,0.8,2.5,-1),(2.1,0.3,3.1,1.5),(2.5,0.33,2.1,5),(6.4,1.3,0.25,1));
begin
for i:=1 to 3 do
for j:=1 to 3 do begin
stringgrid1.Cells[i-1,j-1]:=floattostr(a1[j,i]);
v[i,j]:=a1[i,j];end;

for i:=1 to 4 do
for j:=1 to 4 do begin
stringgrid2.Cells[i-1,j-1]:=floattostr(b1[j,i]);
c[i,j]:=b1[i,j] end;
m:=3; l:=4;
vozr(m,v);
vozr(l,c);

for i:=1 to 3 do
for j:=1 to 3 do
stringgrid1.cells[i-1,j-1]:=floattostr(v[j,i]);


for i:=1 to 4 do
for j:=1 to 4 do
stringgrid2.cells[i-1,j-1]:=floattostr(c[j,i]);

end;

end.


не выходит у меня правильная сортировка...подскажите где не прав?
 

nayke

Well-Known Member
04.08.2010
310
0
#2
procedure TForm1.Button1Click(Sender: TObject);

procedure vozr(n:integer; var x:mass1);
var i,j:integer; t:real;
begin
for i:=1 to n-1 do
for j:=1 to n do
if (x[i,j]<x[i,j+1]) then begin
t:=x[i,j]; x[i,j]:=x[i,j+1]; x[i,j+1]:=t; end;
end;
Проблема в сортировке тебе надо фиксировать строку и сортировать одномерный массив
Код:
for i:=1 to n do
//здесь сортировка одномерного массива если честно давно пользую созданные класс с быстрой сортировкой поэтому код точно не помню можешь сам в сети пузьрковую сортировку поискать но вроде так

for j:=1 to n do
for k:=1 to n do
if (x[i,j]<x[i,k]) then
begin
t:=x[i,j];
x[i,j]:=x[i,k]; 
x[i,k]:=t; 
end;
end;
 
Статус
Закрыто для дальнейших ответов.