Kezdőoldal » Számítástechnika » Programozás » Free Pascal programozás?

Free Pascal programozás?

Figyelt kérdés
Kéne írni egy programot, ami generál 5 random számot 1 és 99 között, majd leírja azokat. Valamint kéne írni bele egy szűrőt, ami kiszűri ha már egy meglévő számot akar generálni és helyette egy újat generál. Tudna valaki segíteni?

2015. márc. 3. 20:04
1 2 3 4
 1/37 anonim ***** válasza:
76%

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

2015. márc. 3. 20:13
Hasznos számodra ez a válasz?
 2/37 Tengor ***** válasza:
100%
Persze, segítünk szívesen (azért vagyunk itt). Hol akadtál el?
2015. márc. 3. 20:32
Hasznos számodra ez a válasz?
 3/37 anonim ***** válasza:

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.

2015. márc. 3. 20:53
Hasznos számodra ez a válasz?
 4/37 A kérdező kommentje:
Köszönöm szépen a segítséget, az utolsó kommentelő nagyon sokat segített. :) Nagyon köszönöm! :)
2015. márc. 3. 22:04
 5/37 anonim ***** válasza:
Az egyik random(90)+1; sort át kellene írni értelemszerűen 99-re, véletlenül bennemaradt...
2015. márc. 4. 07:15
Hasznos számodra ez a válasz?
 6/37 SimkoL ***** válasza:

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.

2015. márc. 4. 08:36
Hasznos számodra ez a válasz?
 7/37 tabaki ***** válasza:

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.

2015. márc. 4. 10:57
Hasznos számodra ez a válasz?
 8/37 tabaki ***** válasza:

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.

2015. márc. 4. 11:11
Hasznos számodra ez a válasz?
 9/37 tabaki ***** válasza:
A fene egye meg, kétszer is benne felejtettem a CRT unit behívását. Az természetesen fölösleges.
2015. márc. 4. 11:22
Hasznos számodra ez a válasz?
 10/37 anonim ***** válasza:
56%

Jahogy ha kompletten megírják helyetted, akkor az nagy segítség, mi?

Hihetetlen...

2015. márc. 4. 11:50
Hasznos számodra ez a válasz?
1 2 3 4

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

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!