Kezdőoldal » Számítástechnika » Programozás » (Pascal) Hogy lehet megoldani,...

(Pascal) Hogy lehet megoldani, hogy egy tömbben ne lehessen két ugyanolyan elem?

Figyelt kérdés
Tehát egy tömbbe szeretnék felvenni véletlenszerű számokat 1-től 34-ig, úgy, hogy ne lehessen a tömbben két ugyanolyan szám. Ezt hogy tudnám megoldani? :D Ezt még nem tanultuk :P
2012. jan. 14. 14:36
 1/5 _Jessy_ ***** válasza:
mielőtt belerakod, megnézed, benne van-e már?
2012. jan. 14. 14:42
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Ciklussal rakok bele véletlenszerű számokat.. Hogy nézzem meg?
2012. jan. 14. 14:46
 3/5 ejbenjaro ***** válasza:

Mondjuk egy másik ciklussal ellenőrid vissza, hogy van e már benne az adott szám. Például:

program veleteln;


var t : array [1..10] of integer;

i, j : byte;

sz : integer;


begin

randomize;

j:=1;


for i:=1 to 10 do

t[i]:=0;


i:=1;

repeat

sz:=random(50)+1;

for j:=1 to i do

if t[j]<>sz then

begin

if t[j]=0 then

begin

t[i]:=sz;

inc(i);

end;

end else break;

until i>10;


for i:=1 to 10 do

writeln(t[i]);

end.


A mellékelt kód nem biztos, hogy tökéletes, de valami ilyesmi elven próbáld.

2012. jan. 14. 16:33
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

Csináld így:

Töltsd föl a tömböt növekvő számokkal pl:

t[0]:=1;

t[1]:=2;

t[2]:=3;

...

t[max-1]:=max;

(a max a tömb mérete, és egyben a legnagyobb elem is)

(for ciklussal töltsd föl természetesen.)


Ezek után a már csak össze kell kavarni az értékeket, amit úgy tehetsz meg, hogy

kisorsolsz egy indexet:

i:=Random(max);

és a tömb i-edik indexén lévő értéket felcseréled az utolsóval:

elméletben: CSERE(t[i],t[max]);

pascalban a csere vhogy így néz ki:

temp:=t[max];

t[max]:=t[i];

t[i]:=temp;


ezek után már Random(max-1)-re teszed meg ugyanezt, majd Random(max-2)-re addig, míg max-j>0, (j az a ciklusváltozó a második for ciklusban)

2012. jan. 14. 20:38
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Köszi :)
2012. jan. 15. 12:02

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!