El akadtam pascal programba. Példa lent (? )
program Pelda;
uses crt;
label start,asd,asd2,asd3,stop;
var k:integer;
c:char;
begin
start:
clrscr;
k:=11;
textbackground(red);
textcolor(white);
gotoxy(10,10);
write(' R g˘ ');
textbackground(blue);
textcolor(yellow);
gotoxy(20,10);
write(' P‚nz ');
gotoxy(30,10);
write(' Vissza ');
gotoxy(80,25);
repeat
c:=readkey;
if c=#0 then begin
textbackground(blue);
textcolor(yellow);
gotoxy(9+k,10);
case k/11 of {ezt nem fogadja el}
1: write(' R g˘ ');
2: write(' P‚nz ');
3: write(' Vissza ');
end;
c:=readkey;
case c of
#75: if k/11>1 then dec(k); { #72 = felfele nyil }
#77: if k/11<3 then inc(k); { #80 = lefele nyil }
end;
textbackground(red);
textcolor(white);
gotoxy(9+k,10);
case k of {‚s ugyanŁgy ezt se..}
1: write(' R g˘ ');
2: write(' P‚nz ');
3: write(' Vissza ');
end;
gotoxy(80,25);
end;
if c=#13 then begin
gotoxy(10,15);
textbackground(0);
textcolor(7);
if k=1 then begin writeln('r g˘');readkey;goto asd;end;
if k=2 then begin writeln('p‚nz');readkey;goto asd2;end;
if k=3 then begin writeln('vissza');readkey;goto asd3;end;
gotoxy(80,25);
end;
until c=#27;goto stop;
asd:
writeln('a r g˘');
readkey;
goto stop;
asd2:
writeln('a p‚nz');
readkey;
goto stop;
asd3:
writeln('vissza ment‚l');
readkey;
goto stop;
stop:
end.
program Pelda;
uses crt;
label start,asd,asd2,asd3,stop;
var k:integer;
c:char;
begin
start:
clrscr;
k:=11;
textbackground(red);
textcolor(white);
gotoxy(10,10);
write('Rágó');
textbackground(blue);
textcolor(yellow);
gotoxy(20,10);
write(' Pénz ');
gotoxy(30,10);
write(' Vissza ');
gotoxy(80,25);
repeat
c:=readkey;
if c=#0 then begin
textbackground(blue);
textcolor(yellow);
gotoxy(9+k,10);
case k/11 of {ezt nem fogadja el}
1: write(' Rágó ');
2: write(' Pénz ');
3: write(' Vissza ');
end;
c:=readkey;
case c of
#75: if k/11>1 then dec(k); { #75 = balra nyil }
#77: if k/11<3 then inc(k); { #77 = jobbra nyil }
end;
textbackground(red);
textcolor(white);
gotoxy(9+k,10);
case k/11 of {és ugyanúgy ezt se..}
1: write(' Rágó ');
2: write(' Pénz ');
3: write(' Vissza ');
end;
gotoxy(80,25);
end;
if c=#13 then begin
gotoxy(10,15);
textbackground(0);
textcolor(7);
if k=1 then begin writeln('rágó');readkey;goto asd;end;
if k=2 then begin writeln('pénz');readkey;goto asd2;end;
if k=3 then begin writeln('vissza');readkey;goto asd3;end;
gotoxy(80,25);
end;
until c=#27;goto stop;
asd:
writeln('a rágó');
readkey;
goto stop;
asd2:
writeln('a pénz');
readkey;
goto stop;
asd3:
writeln('vissza mentél');
readkey;
goto stop;
stop:
end.
"case k/11 of {ezt nem fogadja el}
1: write(' R g˘ ');
2: write(' P‚nz ');
3: write(' Vissza ');
end; "
Azért nem fogadja el, mert nem megszámlálható lesz az osztás eredménye, mivel az osztás mindig valós eredményt ad. Próbálj egész osztást végezni a div segítségével, vagy kerekítsd az eredményt a round-dal.
ilyenkor rohadt jó lenne ha leírnád a hibát amit kiírt
egyébként világos hogy a művelet eredménye nem egy integer változó, márpedig neked az kell, szóval előbb csinálj egy case-nek egy változót k/11 értékkel, ami szerintem extended lesz úgyhogy szépen round() vagy truncate() fv. el csinálj belőle integert
Átírtam kicsit a programodat. Így már működik és nincsenek benne goto-k ;). Nagyjából azt csinálja, amit a tiednek is kellene, ha jól értelmeztem a logikádat.
Az alábbi linken megtalálod az átiratot:
Tesztelni Free Pascal alatt tudtam Ubuntu Linuxon, ezért elképzelhető, hogy Windows alatt lesznek vele gondok. Ubuntun nem voltak.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!