Kezdőoldal » Számítástechnika » Programozás » Tudna segíteni valaki?

Tudna segíteni valaki?

Figyelt kérdés

Pascalban íródott lottószám generátorról van szó.

Forráskódja:

PROGRAM lottoszamok;

USES Crt;

CONST MAX=7; {A T t”mb maxim lis elemsz ma.}

VAR szam, meddig, me, n : byte;

i, j, k : byte; {Ciklusv ltoz˘k.}

T : array[1..MAX] of byte; {Gener lt sz mokat t rol˘ t”mb (soronk‚nt Łjraˇrja a t”mb elemeit).}

BEGIN

ClrScr; {K‚perny‹t”rl‚s.}

RANDOMIZE; {V‚letlensz m-gener l s el‹k‚szˇt‚se.}

Writeln('Melyik lottoval szeretne jatszani: '); Readln(me); {Lott˘ fajt j nak bek‚r‚se.}


While (me<5) OR (me>7) DO {Kapott ‚rt‚k vizsg lata.}

Begin

Write('Rossz adat, kerem ujra: '); Readln(me); {Hib s adat eset‚n Łjra bek‚r‚s.}

End;


CASE me OF {Helyes adat eset‚n vizsg lat, ‚s a gener land˘ sz mok intervallum nak be llˇt sa minden esetben.}

5: meddig:=90;

6: meddig:=45;

7: meddig:=35;

End;

Writeln('H ny szelvenyt jatszol: '); Readln(n); {Szelv‚nyek sz m nak megad sa, nincs megadott maximum.}

Write('Lotto szamok: '); Writeln;


FOR i:=1 TO n DO

Begin

FOR j:=1 TO me DO

Begin

szam:=Random(meddig)+1; {Sz m v ltoz˘ban a gener lt ‚rt‚k elt rol sa.}

FOR k:=1 TO j DO {T t”mb  tj r sa egyez‚st keresve.}

Begin

IF (T[k]<>szam) THEN T[k]:=szam {K‚t azonos elem eset‚n (egy szelv‚nyen bell) Łjrakezd‚s, az ‚rt‚ket nem t roljuk.}

ELSE continue;

End;

Write(T[j]:4); {Szelv‚ny elemeinek kiˇr sa egym s ut n.}

End;

Writeln; {Kocsivissza minden szelv‚ny ut n.}

End;

Writeln('Nyomjon egy gombot a bez r shoz...');

ReadKey; {Gombnyom sra v r s, azt n bez r s.}

END.

A kommentből szerintem világosan kiderül, hogy mit csinálna, de valami szemantikai hiba miatt mégsem szűri ki a soronkénti ( /szelvényenkénti ) ismétlődést.

Előre is köszönöm a segítséget!


2016. nov. 11. 23:40
1 2
 1/16 anonim ***** válasza:

FOR k:=1 TO j DO {T t”mb tj r sa egyez‚st keresve.}

Begin

IF (T[k]<>szam) THEN T[k]:=szam {K‚t azonos elem eset‚n (egy szelv‚nyen bell) Łjrakezd‚s, az ‚rt‚ket nem t roljuk.}

ELSE continue;

End;


Szóval, 1-től az aktuális szám sorszámáig bejárod a tömböt, és ahol nem egyezik az érték, ott a tömbnek beállítod azt. Nem vagyok járatos a Pascalban, de nekem ez úgy tűnik, hogy telerakod a tömböt ugyanazzal a számmal.

2016. nov. 11. 23:57
Hasznos számodra ez a válasz?
 2/16 tabaki ***** válasza:

Ennél rémesebben nem tudtad közölni a kódot? Legközelebb rakd fel valami kódfeltöltő oldalra, ahol legalább az indentálás megmarad, pl. ide: [link]

Amíg megpróbálom értelmezni, egy kis olvasnivaló:

http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..

2016. nov. 12. 00:20
Hasznos számodra ez a válasz?
 3/16 anonim ***** válasza:

#1 jól írja,

ez nem vizsgálat, hanem telepakolja a számmal

meg amúgy sem j-ig kellene vizsgálni hanem j-1-ig és ha nincs egyikben sem, akkor kellene berakni t[j]-be


A random generáláskor egy olyan ciklust kell készítened, amiből akkor van kilépés, ha olyan számot generált ami nincs a tömbben. Erre nem a legjobb a for, inkább használj repeat-et.

2016. nov. 12. 00:43
Hasznos számodra ez a válasz?
 4/16 tabaki ***** válasza:
Hát bocsi, de még mindig nem jutottam el a lényeghez. Ennél a kódnál a répás hányás is elegánsabb a kocsma sarkán, és ez a fajta kommentezés meg végképp zavarossá teszi. Mi a fenének magyarázod a képernyőtörlést meg a kocsivisszát, miközben a szerkezetet működtető ciklusváltozók jelentését nem tartod fontosnak közölni? Mindjárt veszek egy mély levegőt, és újra alámerülök a ciklusrendszeredbe, de így első blikkre nem látom például, hogy hol törlöd a tömböt (ha jól értem a szándékot, ezt szelvényenként meg kéne tenned), meg amúgy is praktikusabbnak látszik halmazt használni a vizsgálathoz.
2016. nov. 12. 01:15
Hasznos számodra ez a válasz?
 5/16 tabaki ***** válasza:
Mire jutottál?
2016. nov. 12. 02:59
Hasznos számodra ez a válasz?
 6/16 ejbenjaro ***** válasza:

Itt egy példa csak skandináv lottóra. Nézd át, értelmezd és fuss neki a tiednek mégegyszer:


program skandilotto;


var

lehetoseg : array [1..35] of byte;

huzott,i : byte;


begin

randomize;

for i:=1 to 35 do

lehetoseg[i]:=i;

i:=1;

while i<=7 do

begin

huzott:=random(35);

if lehetoseg[huzott]<>0 then

begin

writeln(huzott);

inc(i);

lehetoseg[huzott]:=0;

end;

end;

end.

2016. nov. 12. 06:21
Hasznos számodra ez a válasz?
 7/16 tabaki ***** válasza:

Két kísérlet...

Tömbbel:

[link]

Halmazzal:

[link]

2016. nov. 12. 08:52
Hasznos számodra ez a válasz?
 8/16 A kérdező kommentje:

Köszönöm a segítséget!

Ennyiből már meg fogom tudni oldani. A karakterkódolás miatt kicsit érdekes lett a kommentelés, és arra számítottam, hogy ahogy bemásoltam olyan tabulált marad, de kiszúrt velem a rendszer... Elnézést a kellemetlenségért!

2016. nov. 12. 08:54
 9/16 anonim ***** válasza:
A gyakorin a többlet space-ek, meg tabok nem maradnak meg, szóval yea, nem túl alkalmas hosszabb kódok másolására.
2016. nov. 12. 13:42
Hasznos számodra ez a válasz?
 10/16 tabaki ***** válasza:

#9:

Azért ennél már valamivel előbb jár a társalgás...

2016. nov. 12. 16:14
Hasznos számodra ez a válasz?
1 2

További 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!