Kezdőoldal » Számítástechnika » Programozás » Pascal: van hiba ebben a...

Pascal: van hiba ebben a programban, ha igen, mi? Egyszerűbben is meg lehetne írni? (bővebben lent)

Figyelt kérdés

Kétféleképpen írtam meg, tulajdonképpenn csak abban van eltérés, ahogy ellenőrzi a program ha olyan számot adtak meg, ami már szerepelt egyszer.

Egyedül a hibakezelést hagytam ki belőle, mármint amikor ha nem számot ír a felhasználó, ne akadjon ki, hanem kényszerítse ki amíg számot nem ír be.


Első példa:


Program Szamkitalalo;


Uses CRT;


Var

tippek : Array Of Boolean;

i, szam, gszam, n : Integer;

ch : Char;

Begin

Randomize;

Repeat

i := 1;

Repeat

WriteLn('Számkitalálós játék');

WriteLn;

Write('Add meg a felső határt, hogy 0 és az általad megadott szám közt a gép gondoljon egy számra : ');

ReadLn (n);

SetLength (tippek, n);

For i := 1 To n Do

tippek [i] := False;

gszam := Random (n) +1;

writeln;

Write ('Gondoltam egy számot 1 és ',n,' közt. Találgass!');

Repeat

WriteLn;

Write ('Kérem a tippet : ');

ReadLn (szam);

If tippek [szam ] = True Then WriteLn('Ezt a számot már írtad egyszer!')

Else

tippek [szam] := True;

If ( szam > n ) Or (szam < 0) Then

WriteLn('0 és ',n,' intervallumban lehet csak tippelni!');

If (szam < gszam) Then

WriteLn('Nagyobbra gondoltam!');

If (szam > gszam) Then

WriteLn('Kisebbre gondoltam!');

If (szam = gszam) Then

Begin

WriteLn('eltaláltad, gratulálok! (nyomj entert)');

ReadLn;

End;

Until (szam = gszam);

WriteLn;

Write ('Szeretnél mégegyszer játszani ? ');

ch := ( UpCase (ReadKey ) );

Until (ch <> 'I') Or (ch <> 'N');

Until (ch = 'N');

End.


Második példa:


Program Szamkitalalo;


Uses CRT;


Var

tippek : Array [1 ..500] Of Integer;

i, j, szam, gszam, n : Integer;

ch : Char;

van : Boolean;

Begin

Randomize;

Repeat

For i := 1 To 500 Do

tippek [i] := 0;

i := 1;

Repeat

WriteLn('Számkitalálós játék');

WriteLn;

Write('Add meg a felső határt, hogy 0 és az általad megadott szám közt a gép gondoljon egy számra : ');

ReadLn (n);

gszam := Random (n) +1;

writeln;

Write ('Gondoltam egy számot 1 és ',n,' közt. Találgass!');

Repeat

WriteLn;

Write ('Kérem a tippet : ');

ReadLn (szam);

tippek [i] := szam;

inc (i);

van := False;

j := 1;

While (j < i - 1 ) And (Not van) Do

Begin

If tippek [j] = szam Then

van := True;

inc (j);

End;

If van Then

WriteLn('Ezt a tippet már írtad!');

If ( szam > n ) Or (szam < 0) Then

WriteLn('0 és ',n,' intervallumban lehet csak tippelni!');

If (szam < gszam) Then

WriteLn('Nagyobbra gondoltam!');

If (szam > gszam) Then

WriteLn('Kisebbre gondoltam!');

If (szam = gszam) Then

Begin

WriteLn('eltaláltad, gratulálok! (nyomj entert)');

ReadLn;

End;

Until (szam = gszam);

WriteLn;

Write ('Szeretnél mégegyszer játszani ? ');

ch := ( UpCase (ReadKey ) );

Until (ch <> 'I') Or (ch <> 'N');

Until (ch = 'N');

End.



2015. aug. 23. 16:13
1 2 3
 21/21 SimkoL ***** válasza:

Igen, a tömbnövelés. Majdnem mint a halmaz, csak akkor rakunk bele új értéket, ha az még nem szerepel benne.

Off: hát veszélyes dolog is tud lenni a rokonlátogatás :)

2015. aug. 26. 05:30
Hasznos számodra ez a válasz?
1 2 3

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!