Pascalban, hogy lehet tesztet készíteni úgy, hogy legyen a, b, c választási lehetőség? Tovább lent.
Sziasztok!
Vagy, ha jó választ ad, akkor pl. kiírja, hogy ügyes vagy, ha pedig rosszat, akkor pl. ez most nem sikerült.
Előre is köszi! :)
if tudás=0 then begin
Google keresés
end;
program valasz;
var szo : string;
begin
WriteLn('Kerek egy vicces szot: ');
ReadLn(szo);
case szo of
'kelempaszmadar': WriteLn('Hihihi, huhuhu!');
'szaletli': WriteLn('Nem rossz.');
'kecske': WriteLn('Haaat, eleg gyenge...');
else
WriteLn('Semmi humorerzeked... Megbuktal!');
end;
ReadLn;
end.
@tabaki
Nem szeretnék kötözködni, de tudomásom szerint a pascalos "case" csak sorszámozott típussal működik (de lehet hogy rosszul tudom) és a string az nem sorszámozott tipus : [link]
Üdv.
@coopper:
A legritkább esetben küldök be kipróbálatlan kódot, ez sem az.
Talán valamikor az ősidőkben -- esetleg valami technikai megfontolás okán -- igaz lehetett, amit mondasz, netán még valami korai szabványba is belekerült, most azonban mind a Delphiben, mind a Free Pascalban hétköznapi a fentebbi megoldás:
...és ha belegondolsz, ebben nincs semmi csoda. Úgy is képzelheted, hogy a case-ágak egymástól (majdhogynem) független if utasításokként vizsgálják, hogy a megadott érték megegyezik-e valamely előre definiálttal -- márpedig két string egyenlősége ugyanúgy vizsgálható, mint két karakteré vagy integeré. Ebben az esetben az egyébként általam is becsült prog.ide.sk magyarázatát zavarosnak és logikailag indokolatlannak tartom. A feltétel-ellenőrzés semmiféle sorrenddel vagy egymást követő elemekkel nem foglalkozik, csak a megadott érték és a konstansok összehasonlításával. Hogy ebből a realt kizárják, azt a törtek egyenlőségre vizsgálásának ismert problémái érthetővé teszik, de amikor egyértelműen eldönthető a feltétel igazságtartalma, akkor miért is ne?
@tabaki
Az általad linklelt stackoverflow-os link is azt mondja, (legalább is szerintem), hogy delphiben nem megy : "The Delphi Case Statement only supports ordinal types. So you cannot use strings directly"
És ezt saját tapasztalatból meg is tudom erősiteni, bekopiztam a kódot egy delphi consolos alkalmazásba és hibát kaptam a "Case szo of" sornál kép : [link]
Az lehet, hogy Freepascalban müködik, ezt nem tudom, nem próbáltam, de hogy Delphi7-ben nem az biztos.
üdv.
@coopper:
Igazad van, ezt csúnyán benéztem sebtiben, a bejegyzés pont arról szól, hogy a Delphi ez egyszer nem tudja azt, amit a Free Pascal. Ha nem is menti, de valamennyire magyarázza a trehányságomat, hogy a FP általában lelkiismeretesen másolja a Nagy Testvér megoldásait -- hát, most nem. Ennek az alapján már én is inkább azt javaslom, hogy a hordozhatóbb kód érdekében érdemes kerülni a közvetlen stringhasználatot. Mellesleg, ha az ember mégis él vele, illendő a stringet előbb valami megbízhatóbban vizsgálható formára hozni, mondjuk LowerCase utasítással:
...
case LowerCase(szo) of
...
Már nem azért de a kérdés az arról szólt, hogy a kérdező szeretne csinálni olyan kérdéssort, ahol 3 (vagy több)megadott válasz is van és azok közül tud választani a teszt kitöltője.
Egy lehetséges megoldás:
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!