Zdravim. Mohl by mi nekdo pomoci? Mam program, kde chci, aby uzivatel zadal odpoved - bud "a" nebo "n". at vsak zadam cokoli ve formatu jednoho pismene (char odpoved[2];) vypise mi to prikaz vztahujici se k "a". muze mi nekdo helpnout? tady je zdrojovy kod:
char odpoved[2];
cout << "nnSouhlas" << ii << " V" << aa << "mi zadan" << ee << " " << uuu << "daje? (a/n) ";
cin.getline (odpoved, 2);
if (odpoved != "a")
{
cout << "nnV" << yy << "born" << eee << " m" << uu << zz << "eme tedy pokra" << cc << "ovat";
}
else if (odpoved != "n")
{
cout << "nnStiskn" << eee << "te tedy 2x ENTER a spus" << tt << "te program znovu.";
cin.get();
cin.get();
return 0;
}
cin.get();
cin.get();
return 0;
Fórum › C / C++
Pomoc s cyklem if/else
To Thomisso:
char odpoved[2];
cout << "nnSouhlas" << ii << " V" << aa << "mi zadan" << ee << " " << uuu << "daje? (a/n) ";
cin.getline (odpoved, 2);
if (odpoved[0] == 'n') {
cout << "nnStiskn" << eee << "te tedy 2x ENTER a spus" << tt << "te program znovu.";
cin.get();
cin.get();
return 0;
} esle {
cout << "nnV" << yy << "born" << eee << " m" << uu << zz << "eme tedy pokra" << cc << "ovat";
}
ano musia byt.. inac ti to neskompiluj (pretoze aj "a" je kvazi-pole kde dalsi znak za a je NULL).. Ked pouzijes jednoduche zatvorky ukoncovaci znak sa nepouzije cize ide o cisty znak cize skutocny char nie char[]
kompilator vlastne chape "a" ako char[2] v ktorom = { 'a', NULL } kdezto 'a' chape ako char v ktorom je len to samotne 'a'.Napriklad kompilator ti nezoberie 'asd' ale "asd" uz ano.. Treba si uvedomit ze v stringoch je stale konci este NULL znak.
No vysvetlit som to dost blbo ale snad vies co som tym myslel?
Tak mě dostalo tohle:
if (odpoved != "a")
To totiž znamená: pokud se znak neshoduje se znakem "a", udělej....
Takže potom je jasné, že blok se provede vždy, kromě případu zadání "a".
Správně by mělo být:
if (odpoved == "a")
Doporučuju podobné rozhodování dělat pomocí příkazu switch.
To paashi: Jak už psal sn3d, není správně ani
if (odpoved == "a")
musí být if (odpoved == 'a')
To midin: Nemusá, ale uznávám, že by to tak nefungovalo. Musel by se porovnávat řetězec. Lepším řešením je porovnávání znaku, ale to by "odpoved" měla být typu char a ne char[]
To paashi: Zde se porovnává znak a je možno použít char[]. I když to nemá moc smysl :P
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Problem s for cyklem — založil zoufalec
Problém s cyklem while — založil Tase
Problem s cyklem while — založil slipka
Procházení cyklem složky — založil Ralis
Vytváření proměných cyklem FOR — založil pidgin
Moderátoři diskuze