Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet azt a pascalban...

Hogyan lehet azt a pascalban megvalósítani, hogy ne generáljon újra azt a számot, amit már kiadott?

Figyelt kérdés
2011. nov. 30. 23:36
 1/6 anonim ***** válasza:
hozzáadod valami tömbhöz, halmazhoz vagy listához vagy akármihez, és megnézed, hogy már szerepel-e az adott szám, amikor újat "generálsz"
2011. nov. 30. 23:46
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

program dkdk;

uses crt;

var a:array[1..5] of integer;

q,w,e,i,u,z:integer;

begin

clrscr;

randomize;

for i:=1 to 5 do begin

e:=i-5;

w:=i+5;

if (a[z]<>a[e]) or (a[z]<>a[w]) then begin

a[z]:=random(89)+1;

writeln(a[z]);

end;

end;

end.


Én valami ilyesmivel próbálkoztam.

(ui.:magamtól tanulom.)

2011. nov. 30. 23:50
 3/6 anonim ***** válasza:
Általában a "randomize;" szokott kimaradni, és ilyenkor a "random()" függvény mindig ugyanazt az értéket adja vissza.
2011. dec. 1. 06:54
Hasznos számodra ez a válasz?
 4/6 coopper ***** válasza:

Lottó számok ?


Előszöris a számgenerálást ciklusba kellene rakni (addig generálsz számot, amig nem sikerül, mert ha nem sikerül a szám generálás akkor azt ujra kell generálni).


Hogyan tudod eldonteni, hogy a generált szám az volt-e már ?


Hát végigmész az eddig generált számokon és megnézed, hogy azok között megvan-e az éppen generált szám.


Ugy nagyjából a következőket kellene beillesztened a progidba :


Jelző:=True ;

while Jelző do begin

Jelző:=False ;

a[z]:=random(89)+1;

for J:=1 to Z-1 do begin

     if a[z]=a[j] then Jelző:=True;

end ;

end ;


Működési magyarázat :


A ciklus elindul, mivel "True" értéket kap, közvetlenűl a ciklusmagban a ciklus "false" értéket kap aminek eredményeként elvileg csak egyszer fut le,


legenerálod a számot,


megnézed, hogy az előző számokban volt-e már a mostani szám (for j ciklussal) ha valamelyik szám már volt akkor a ciklus ujra True azzaz igaz értéket kap és ujra lefut ezzel ujra legenerálva a számot.


Sok sikert.

Üdv.

2011. dec. 1. 11:21
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

Szia!

Úgy látszik,hogy jó a program így.


program lotto;

uses crt;

var i,w,j:integer;

a:array[1..5] of integer;

Jelz:boolean;

begin

clrscr;

randomize;

Jelz:=True ;

while Jelz do begin

Jelz:=False ;

a[i]:=random(89)+1;

for J:=1 to i-1 do begin

if a[i]=a[j] then Jelz:=True;

end ;

end ;



for i:=1 to 5 do begin

a[i]:=random(89)+1;

writeln(a[i]);

for w:=1 to i-1 do begin


if a[w]=a[i] then

a[i]:=random(89)+1;

writeln;

end;


end;

end.



Azt gondoltam,hogy ha ez se sikerül(nem sikerül felhasználnom normálisan azt,amit írtál) hagyom az egészet.

Azonban szerintem látszik,hogy nem tanárral tanulom.:(

Emellett jobb,ha maradok az egyszerűbb feladatoknál,meg annál a blogdiagramnál,mert azok kellenek majd a vizsgára.

Köszi mégegyszer.:)

Köszönet a többi válaszolónak is.:)

Remélem,hogy nem maradok ilyen ... pascal-programozásból.

2011. dec. 1. 18:18
 6/6 coopper ***** válasza:

Szia.


Szerintem ennyi (Az elsőben elrontottam a ciklust a repeat - until direkte erre van, hisz neked egyszer biztosan le kell futnia a ciklusnak ) :


program lotto;

uses crt;

var i,j:integer;

a:array[1..5] of integer;

Jelz:boolean;

begin

    clrscr;

    randomize;

    for i:=1 to 5 do begin

        jelz:=False ;

        repeat

            a[i]:=random(90)+1;

            for j=1 to i-1

                if a[i]=a[j] then Jelz:=True;

        until Jelz;

    end ;

    for i:=1 to 5 do begin

writeln(a[i]);

    writeln;

end.


Magyarázat :


Itt a belépési feltétel nem érdekes, mivel hátultesztelős a ciklus. Egyszer mindig le kell futnia (egy szám generálás)


A random(x) szerintem 0 és (x-1) között generál, de ennek nézz utánna (ha igy van akkor 90 kell a randomhoz).


A többi változatlan,


Próbáld ki.


Sok sikert.

Üdv.

2011. dec. 1. 19:42
Hasznos számodra ez a válasz?

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!