Pascal random generált tömb növekvő és csökkenő sorrendben?
Sziasztok!
Hogyan lehet Pascalban egy random generált tömbökből álló halmazt növekvő és csökkenő sorrendbe állítani?
Illetve bocsánat.
Egy halmazt nem lehet csökkenő vagy növekvő sorrendbe állítani, eleve hogyan rendezel tömböket?
Gondold át ezt kicsit.
Akkor azt írd.
Random generált számokból álló tömb, meg a random tömbökből álló halmaz rohadtul nem ugyanaz.
Programozásban a siker első kulcsa: pontos specifikáció.
Sok féle rendező algoritmus van.
A legegyszerűbb a buborék. A lényege, hogy az egymás melletti tagokat felcseréled (ha szükséges) a sorrendiség irányában.
procedure TBubbleSort.Sort(var A: array of Integer);
var
I, J, T: Integer;
begin
for I := High(A) downto Low(A) do
for J := Low(A) to High(A) - 1 do
if A[J] > A[J + 1] then
begin
VisualSwap(A[J], A[J + 1], J, J + 1);
T := A[J];
A[J] := A[J + 1];
A[J + 1] := T;
if Terminated then Exit;
end;
end;
Itt egy komplett megoldás:
program szamok;
const meret = 100;
var
t: array[1..meret] of integer;
i: integer;
procedure rendez;
var i, j: integer;
begin
for i:=1 to meret do
for j:=1 to i-1 do
if(t[j] > t[j+1] then { csere }
begin
w := t[j];
t[j] := t[j+1];
t[j+1] := w;
end;
end;
procedure kiir;
var i: integer;
begin
for i:=1 to meret do
write(t[i], ' ');
end;
{ főprogram }
begin
{ Először feltöltjük a tömböt véletlen számokkal }
for i:=1 to meret do
t[i] := random(10000); { 0..9999 közé eső véletlenszám }
writeln('Rendezetlenül:');
kiir;
rendez;
writeln('Rendezve:');
kiir;
readln;
end;
Igen, jól látod, a w valóban nem volt deklarálva. Sőt, a tömb sem 0 indexhatárú, jobb lett volna 0..99, és persze a ciklusváltozók is 0-ról kellene, hogy startoljanak.
De nem én írtam, csak találtam valahol.
Viszont, ha a tömb méretét megváltoztatod, akkor is működnie kell.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!