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
 1/21 anonim ***** válasza:
Logikai tömb helyett szám halmaz lényegesen jobb választás lenne.
2015. aug. 23. 16:19
Hasznos számodra ez a válasz?
 2/21 A kérdező kommentje:

Miért lenne jobb választás?

Kizárólag az elsőben oldottam meg logikai tömbben, másodikban számtömböt használtam.

Én úgy tudom, hogy a halmaz típus csak 0 és 255 közti értékekkel működik.


program Halmaz_proba;

var

h : Set of Integer;

begin

end.


Nincs sikerem vele úgy tűnik.

2015. aug. 23. 16:43
 3/21 SimkoL ***** válasza:
54%
A dinamikus tömbök indexe 0-tól kezdődik, a kódod egy köpedelem, a Pascal megcsúfolása. Nem szintaktikailag, hanem 'pofára'. Több éve 'ugatom', hogy legyél, legyetek igényesek a kódra mert később C és hasonszőrű testvérei alatt jön a 'szopóka'.
2015. aug. 23. 16:53
Hasznos számodra ez a válasz?
 4/21 A kérdező kommentje:
Ilyen nagy probléma hogy nagybetűvel írtam hogy pl. Integer stb, amit szerinted nem kellett volna nagybetűvel írni?
2015. aug. 23. 16:57
 5/21 A kérdező kommentje:
Segítesz hogy mi van nagybetűvel írva amit ezentúl írjak kicsivel?
2015. aug. 23. 16:58
 6/21 SimkoL ***** válasza:
28%
Még mielőtt megszólna valaki a 'durva' hozzászólásom miatt tessék megszokni mi kis és mi nagybetűs. Bár a Pascal 'megeszi' a C típusú nyelvek nem. Nem 'basztatás' élettapasztalat. Az okos ember a más kárán tanul.
2015. aug. 23. 17:00
Hasznos számodra ez a válasz?
 7/21 A kérdező kommentje:

Utána tudok olvasni, hogy mit írjak kis és mit nagybetűvel?

Az elgondolásom (szerinted) mennyire jó a programmal kapcsolatban, van amit lehetne rövidebben, vagy egyszerűsíteni?

2015. aug. 23. 17:18
 8/21 SimkoL ***** válasza:

Bocsi, kicsit le vagyok lassulva, az egyik unokám keresztelőjéről jövök :)

Tehát ha szép kódot akarsz írni Pascal-ban akkor minden foglalt szót kisbetűvel írsz. Nem sok van belőlük var, for, to, begin, end, while, repeat, until, if, and, or, do, not, uses, program... van még jó pár utána kell olvasni. Nem azért tépem a szám, hogy nem olvasható a kód - bár ronda - hanem azt szeretném, hogy ne essetek abba a hibába a C alapú nyelveknél, hogy szerinted jó a kód csak az éppen egyiket nagy betűvel írtam.

Én is megettem annak idején ezzel a húgyos körtét ezért próbálom beleverni a 'fiatalok' fejébe.

A kódot mindjárt megnézem ha tisztul a fejem :)

2015. aug. 23. 17:21
Hasznos számodra ez a válasz?
 9/21 SimkoL ***** válasza:

Itt van hibakezeléssel mind két program, a számbevitel ellenőrzését és a másodiknál a szám ellenőrzését - szerepelt-e - is kiszerveztem egy-egy függvénybe.

[link]

2015. aug. 24. 14:15
Hasznos számodra ez a válasz?
 10/21 tabaki ***** válasza:

Na, megint fölöslegesen törtem magam. Az én változatom:

[link]

2015. aug. 24. 14:45
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!