Witam,
Postanowiłem zrobić taki o to program, który będzie miał za zadanie porządkowanie punktów o współrzędnych (x,y) wpisanych do tablicy dwuwymiarowej.
Udało mi się zrobić porządkowanie kolumn, na pierwszy rzut oka działa.
Jeżeli mogę Was prosić, to żebyście ocenili, co powinienem poprawić, nad czym się zastanowić, wiem, że nie jest to zbyt wyszukany algorytm, no ale na inny nie mogłem wpaść i chciałem prosić o jakieś rady, by coś jeszcze może w tym zmienić.
program porzadkowaniepunktow;
uses crt;
var
tab:array[1..10001,1..3] of longint;
tmp,tmp2:integer;
n:integer;
a,b,z:integer;
procedure wczytajtablice(n:longint);
var i:longint; j:byte;
begin
for i:=1 to n do
begin
for j:=1 to 2 do
begin
read(tab[i][j]);
end;
end;
end;
procedure porzadkujkolumny(n:integer);
var k,x,y:integer;
begin
for k:=1 to n do
begin
for x:=1 to n-1 do
begin
for y:=1 to 1 do
begin
if(tab[x][y]>tab[x+1][y]) then
begin
tmp:=tab[x][y];
tmp2:=tab[x][y+1];
tab[x][y]:=tab[x+1][y];
tab[x][y+1]:=tab[x+1][y+1];
tab[x+1][y]:=tmp;
tab[x+1][y+1]:=tmp2;
end;
end;
end;
end;
end;
begin
clrscr;
REPEAT
readln(n);
UNTIL (n>=1) and (n<=10000);
WczytajTablice(n);
PorzadkujKolumny(n);
readln;
clrscr;
for a:=1 to n do
begin
for b:=1 to 2 do
begin
write(tab[a,b], ' ');
end;
writeln;
end;
readln;
end.
Ponadto, chciałem się spytać, w jaki sposób teraz mogę uporządkować wiersze? Czyli jeżeli mam np. dwa punkty o współrzędnych 1 - (1,2 ) oraz 2 - (1,1), to w jaki sposób to zrobić? Próbowałem robić na tej samej zasadzie, co robiłem porządkowanie kolumn, lecz nie działało to poprawnie.
Pozdrawiam serdecznie i dzięki
#edit w kwestii zmienienia wielkości przyporządkowanym zmiennym, to pobawię się potem, sam nie wiem dlaczego dałem aż takie wielkie.