Diskuze: C++ while
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Všiml jsem si několika chyb:
while (opakovat = true) {
Chceš porovnávat (==), ale přiřazuješ (=)
if (odpoved == "ano") {
Třída string nemá žádné přetížení, aby se mohla porovnat pomocí '=='. Použij 'string.compare(string)'. Pozor vrací '0' pro shodnost.
bool opakovat = true;
Vytváříš novou proměnnou, která už existuje, přičemž jí jen chceš přiřadit 'true'. Nemělo by se to ani zkompilovat.
bool opakovat;
Zde je určitá pravděpodobnost, že by se do 'opakovat' přiřadila '0' a ten while cyklus by ani neproběhl.
Ahoj,
v podmínce cyklu ti chybí jedno rovnítko. Takhle místo toho, aby ses zeptal na hodnotu v proměnné opakovat, ji tam přiřadíš. Správně to bude
while (opakovat == true) {
nebo třeba
while (opakovat) {
Překladač ti možná ohledně té podmínky napsal varování. Je velmi užitečné si na varování dávat pozor, číst je a eliminovat podobně jako chybové hlášky (nastavit si, že se mají varování považovat za chyby, nemusí být špatné).
Tady pro řetězce vidím operátor == definovaný.
http://www.cplusplus.com/…g/operators/
Moje chyba, string moc nepoužívám a když jsem koukal na cplusplus.com tak jsem si nevšiml 'relational operators'.
Na druhou stranu je rozumné na toto upozornit, protože ne ve všech jazycích lze řetězce porovnávat tímto způsobem (Java, C).
Děkuju za radu, ale když tam zadám
while (opakovat) {
, tak mi to hodí error.
Děkuji
Absolutně nevím, jak na to. V cyklech jsem lama.
Hádám, že něco o tom, že se snažíš číst hodnotu neinicializhované proměnné? Pokud ano, stačí
bool opakovat = true;
bool opakovat = true; v else se zkompiluje bez problémů. Výsledný program ale nedává smysl.
Zobrazeno 11 zpráv z 11.