Kezdőoldal » Számítástechnika » Programozás » Pascal random generált tömb...

Pascal random generált tömb növekvő és csökkenő sorrendben?

Figyelt kérdés

Sziasztok!


Hogyan lehet Pascalban egy random generált tömbökből álló halmazt növekvő és csökkenő sorrendbe állítani?



2016. jan. 25. 17:25
1 2
 1/11 anonim ***** válasza:
Rendezni kell.
2016. jan. 25. 17:27
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:

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.

2016. jan. 25. 17:28
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:
Arra gondoltam hogy egy tömböt hozok létre, az kiír mondjuk 5 random generált számot, és azokat utána kiírja növekvő vagy csökkenő sorrendben is. Ezek szerint erre nincs lehetőség?
2016. jan. 25. 17:59
 4/11 anonim ***** válasza:
Hogyne lehetne. Rengeteg rendezőalgoritmus elérhető a neten, példákkal. A google meg ingyenes.
2016. jan. 25. 18:02
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:

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ó.

2016. jan. 25. 18:08
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:

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;

2016. jan. 25. 18:54
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

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;

2016. jan. 25. 18:57
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
Ez így valóban működik, bár van benne pár apróbb hiba, ami egyből észrevehető.. Például nincs deklarálva a W és az utolsó end mögött pontosvessző van. Ezektől eltekintve működik. Csak azt nem értem, hogyha a tömbben és azon kívül megváltoztatom a 'meret' értékét, akkor miért nem működik rendesen a program?
2016. jan. 25. 20:22
 9/11 anonim ***** válasza:
Működik az.
2016. jan. 25. 21:01
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

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.

2016. jan. 25. 21:54
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!