Mi a hiba a programban?
Lottozó programot szeretnék csinálni , ahol előszór bekér 5 számot és ha nem kisebb 1-nél, de nem is nagyobb 90-nél akkor generáljon le magától 90-ig számokat
program valami;
var a,b,c:integer;
begin
for b:= 1 to 5 do
begin
a:=0;
repeat
writeln(b, '. szám:');
readln(a);
if a < 1 then write('Írj be nagyobb számot')
else if a > 90 then write('Írj be kisebb számot')
else
for c:= 1 to 5 do
Begin
until
randomize;
a:=random(89)+1;
writeln(a);
end;
end.
és ha lehetséges a végén kiírja, hogy szám jó és ebből hány van jó helyen
"Tömbözni nem tudok, úgyhogy ez így maradt"
Mi a frásznak jársz iskolába, ha nem vagy hajlandó tanulni?
#11 vagyok
Vagy ha nem iskolai feladat, akkor tárgytalan a kérdés.
A szándék dicséretes, a programod ettől függetlenül értelmetlen zagyvaság. Viszont helyes, hogy szégyenkezés nélkül közölted, és nem azért írtad ki a kérdést, hogy valaki megírja helyetted. Javaslom, hogy a többiek is vegyék ezt figyelembe, mielőtt oltogatásra fakadnának.
Mivel csak 5 számot kell ellenőrizned, megoldható tömbök nélkül is, igaz, hogy várhatóan valami kínosan nyakatekert módszerrel. Arra mindenképp ügyelj, amit #4 említett, hogy ciklusokat nem lehet összehorgolni, a belsőt mindig előbb be kell fejezned, mint a külsőt. A randomize meg fölösleges a ciklusban, elég egyszer megcsinálnod valahol a program elején, lényeg, hogy az első véletlenszám előtt legyen.
"és ha lehetséges a végén kiírja, hogy szám jó és ebből hány van jó helyen"
Ezt a mondatodat nem voltam képes értelmezni.
Most már tapasztalatból mondhatom, hogy meg lehet írni tömbök nélkül, de a jobb érzésű emberekre való tekintettel nem közlöm a munkámat...
Eddig ennyire jutottam:
program lotto;
var n,k,sz,i : longint;
begin
Randomize;
n := 90; k := 5; sz := k; i := 1;
while sz > 0 do
begin
if Random < sz / (n-i+1)
then begin
writeln(i);
sz := sz - 1;
end;
i := i + 1;
end;
end.
de még mindig csak az utolsóra nézi meg, és egy random számot nem variálja
boccs rosszat küldtem ..amit neten volt az nem kér be számokat így nem jó ..
program lotto;
var a,c,l:integer;
b:array [1 .. 90] of integer;
begin
repeat
for l:=1 to 5 do
begin
write(l, '. sz mt: ');
readln(b[l]);
if b[l] < 1 then writeln('írj be nagyobbat!')
else if b[l] > 90 then writeln('írj be kisebbet')
else
end;
writeln('A nyerő számok:');
for c:=1 to 5 do
begin
randomize;
a:=random(90)+90;
write(a);
end;
until ( b[l] > 1) or ( b[l] < 90 );
end.
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!