Не пойму, в чём ошибка при сортировке матрицы. Читаю из файла матрицу, всё ок. Но после сортировки на местах элементов появляются числа типа 15358. Помогите
procedure k1(n:integer;x:mat;k2:string;var z:mat);
var i,j,l,k,t:integer;
b:array [1..10] of integer;
begin
if (k2='>') then begin
k:=0;
for i:=1 to n do
for j:=1 to n do begin
k:=k+1;
b[k]:=x[i,j];
end;
for l:=k downto 2 do
for i:=1 to k-1 do
if (b[i+1]>b[i]) then begin
t:=b[i];b[i]:=b[i+1];b[i+1]:=t;
end;
k:=0;
For i:=1 to n do
for j:=1 to n do begin
k:=k+1;x[i,j]:=b[k];
end;
end;
ты что делаешь?
у тебя запрет на изменение х.
какой нафиг
x[i,j]:=b[k];?
Так, и как это обойти?
procedure k1(n:integer;x:mat;k2:string;var z:mat);
procedure k1(n:integer;x:mat;k2:string;var z:mat);
var i,j,l,k,t:integer;
b:array [1..10] of integer;
begin
if (k2='>') then begin
k:=0;
for i:=1 to n do
for j:=1 to n do begin
k:=k+1;
b[k]:=x[i,j];
end;
for l:=k downto 2 do
for i:=1 to k-1 do
if (b[i+1]>b[i]) then begin
t:=b[i];b[i]:=b[i+1];b[i+1]:=t;
end;
k:=0;
For i:=1 to n do
for j:=1 to n do begin
k:=k+1;x[i,j]:=b[k];
end;
for i:=1 to n do
for j:=1 to n do
z[i,j]:=x[i,j];
end;
1 2 3 4 5
2 2 2 2 2
0 0 0 1 5
4 4 4 4 4
8 5 0 0 3
моя матрица, читается из файла.
вот что получается-
3 1 5 4 4
4 4 4 8 5
0 12 24932 4 3
15873 0 0 0 0
0 0 0 0 0
For i:=1 to n do
for j:=1 to n do begin
k:=k+1;x[i,j]:=b[k];
end;
for i:=1 to n do
for j:=1 to n do
z[i,j]:=x[i,j];
For i:=1 to n do
for j:=1 to n do begin
k:=k+1;z[i,j]:=b[k];
end;
это из юнита.
procedure k1(n:integer;x:mat;k2:string;var z:mat);
var i,j,l,k,t:integer;
b:array [1..10] of integer;
begin
if (k2='>') then begin
k:=0;
for i:=1 to n do
for j:=1 to n do begin
k:=k+1;
b[k]:=x[i,j];
end;
for l:=k downto 2 do
for i:=1 to k-1 do
if (b[i+1]>b[i]) then begin
t:=b[i];b[i]:=b[i+1];b[i+1]:=t;
end;
k:=0;
For i:=1 to n do
for j:=1 to n do begin
k:=k+1;x[i,j]:=b[k];
end;
end;
if (k2='<') then begin
k:=0;
for i:=1 to n do
for j:=1 to n do begin
k:=k+1;
b[k]:=x[i,j];
end;
for l:=k downto 2 do
for i:=1 to k-1 do
if (b[i+1]<b[i]) then begin
t:=b[i];b[i]:=b[i+1];b[i+1]:=t;
end;
k:=0;
For i:=1 to n do
for j:=1 to n do begin
k:=k+1;x[i,j]:=b[k];
end;
end;
for i:=1 to n do
for j:=1 to n do
z[i,j]:=x[i,j];
end;
program Modul;
uses crt,D11D;
var A,B,C,A1,B1,C1,T,T1:mat;
i,j,n,n11,s,v:integer;
ab,ac,ad:string;
l:string;
begin
clrscr;
write('ђ §¬Ґа®бвм ¬ ваЁжл = ');readln(n11);
ab:=('dk.dat');
ac:=('dk1.dat');
ad:=('dk2.dat');
vvod (ab,n11,n11,A);
vvod (ac,n11,n11,B);
vvod (ad,n11,n11,C);
l:='>';
{k1(n11,A,l,A1);
k1(n11,B,l,B1);
k1(n11,C,l,C1);}
sum(n11,A1,B1,T1);
sum(n11,T1,C1,T);
writeln('summarnaia Matrica');
Vivod(n11,n11,T);
readkey;
clrscr;
writeln('Matrica1');
{k1(n11,A,l,A1);}
Vivod(n11,n11,A1);
readkey;
clrscr;
writeln('Matrica2');
{k1(n11,B,l,B1);}
Vivod(n11,n11,B1);
readkey;
clrscr;
writeln('Matrica3');
{k1(n11,C,l,C1);}
Vivod(n11,n11,C1);
readkey;
end.
как описан тип mat?
type mat=array [1..10,1..10] of integer;
а как ты пытаешься его запихнуть в b:array [1..10] of integer;?
я просто не могу понять, как сунуть 100 элементов в 10 ячеек