Mit ronthattam el ebben a programban (C++)?
Mi az amit elronthattam programban, hogy kiírja, hogy "rosszul irtad be"?Kép:
A segítséget előre is köszönöm!
Az utolsó elágazás feltételét.
Legyen inkább:
(start_valasz != "start" && start_valasz != "exit")
> if(start_valasz != "start" && "exit" )
Ennek sincs több értelme, mint az elsőként linkelt változatnak. Az if() paramétere egy olyan kifejezés, ami logikai igen-nem érték lesz. Ezeket kombinálhatod pl. az és/vagy operátorokkal, de azok is logikai kifejezésekkel dolgoznak. Tehát:
start_valasz != "start"
&&
"exit"
De itt az "exit" nem nulla, tehát mindig igazat fog visszaadni. Ez volt a hiba:
valami && IGAZ = valami
valami || IGAZ = IGAZ (a valami-től függetlenül)
Helyesen:
start_valasz != "start" && start_valasz != "exit"
vagy
!(start_valasz == "start" || start_valasz == "exit")
(Ld. még: De-Morgan azonosságok.)
|| "exit"
rész miatt jelenik meg az üzenet, mert a feltétel ezzel egyenlő:
HA "exit"
HA true
if-ek helyett ezt ajánlom:
// HA start
if(start_valasz == "start")
...
// HA exit
else if(start_valasz == "exit")
...
// HA az előző feltételek egyike sem teljesült (nem start és nem exit)
else
...
Az utolsó if hibás. Ugyan azt a változód leteszteled hogy egyenlő-e x-el és y-al, és ha az egyikkel nem egyenlő akkor belépsz a ciklusmagba. Mivel mind a kettővel egyszerre nem lehet egyenlő ezért kapod meg az üzenetet.
C++-ban még nem programoztam(meg amúgy is régen:D), de én valahogy így csinálnám:
if(válasz=="aaa" && válasz="bbb"){
és akkor ezen belül kezeled megint a különböző válaszokat
}
majd utána egy else:
else:print"hibás válasz"
De az elseif még jobb amint fent írtak.
vagy:
> if(válasz=="aaa" && válasz="bbb")
Egyszerre két értéke biztos nem lesz. :)
Semmi gond, értettem, csak a kérdező nehogy félreértse.
Respect. :)
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!