Free Pascal programozás?





1: Csinálsz egy tömböt
2: Generálsz egy számot
3: Ha nincs a tömbben bele helyezed, ellenkező esetben újat generálsz
Egyenként könnyedén rá lehet keresni:
1: Pascal array
2: Pascal generate random number
3: Ha ez nem megy szólj a tanárnak tanítson mielőtt házit ad










Itt a probléma egy rendkívül bonyolult és nem szép implementációja, pl. lehetne rajta gyorsítani hogy ne menjen annyiszor végig a tömbön, a második repeat-until ciklust egy while elöltesztelőssel gyorsítani, ezen kívül esztétikai és egyéb hibák is biztosan vannak bőven.
Elvileg halmazokkal még könnyebben menne (mert ott ellenőrzés nem szükséges, csak egyszer fordulhat egy adott elem benne elő), csak azt még nem használtam olyan gyakran hogy mieg is tudjam benne írni :S
Program Szam_tomb_90;
uses crt;
var
t:array[1..5] of byte;
szam:byte;
i,j:byte;
l:boolean;
begin
randomize;
i:=2;
szam:=random(99)+1;
j:=1;
t[1]:=szam;
repeat
szam:=random(90)+1;
l:=false;
j:=1;
repeat
if t[j]=szam then l:=true;
inc(j);
until(j=i) or(l=true);
if l=false then
begin
t[i]:=szam;
inc(i);
end
else szam:=random(99)+1;
until(i=6);
for i:=1 to 5 do
begin
writeln(t[i]);
end;
readln;
end.










Picit rövidebben:
program Random99;
var szamok : set of byte;
tomb : array[1..5] of byte;
ujszam, k : byte;
begin
Randomize;
for k := 1 to 5 do
begin
ujszam := Random(99) + 1;
while (ujszam in szamok) do ujszam := Random(99) + 1;
szamok := szamok + [ujszam];
tomb[k] := ujszam;
end;
for k := 1 to 5 do Write(tomb[k]:3);
ReadLn;
end.





Ellenpéldaként egy tárpocsékolós tapló-változat:
program durrbele;
uses crt;
var
i, szam : byte;
keszlet: array[1..99] of byte;
BEGIN
randomize;
for i := 1 to 99 do keszlet[i] := i;
for i := 1 to 5 do begin
repeat
szam := random(99)+1;
if keszlet[szam] = 0 then szam := 0 else keszlet[szam] := 0;
until szam > 0;
Write(szam, ' ');
end;
WriteLn; ReadLn;
END.





Ja, bocs, most nézem, hogy csak mind az öt szám generálása után jön a kiírás. Akkor mondjuk, legyen így:
program durrbele2;
uses crt;
var
i : byte;
szam : array[1..5] of byte;
keszlet : array[1..99] of byte;
BEGIN
randomize;
for i := 1 to 99 do keszlet[i] := i;
for i := 1 to 5 do begin
repeat
szam[i] := random(99)+1;
if keszlet[szam[i]] = 0 then szam[i] := 0 else keszlet[szam[i]] := 0;
until szam[i] > 0;
end;
for i := 1 to 4 do Write(szam[i], ', ');
WriteLn(szam[5]); ReadLn;
END.










Jahogy ha kompletten megírják helyetted, akkor az nagy segítség, mi?
Hihetetlen...
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!