[C/C++] Fehler in einer gaaanz simplen Fußschleife

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Zanlan, 18. April 2012 .

Schlagworte:
  1. 18. April 2012
    Fehler in einer gaaanz simplen Fußschleife

    Hey Leute!
    Ich hoffe ihr könnt mir bei einer ganz simplen Schleife weiterhelfen?(
    Unzwar sieht die so aus..

    Code:
    #include <iostream>
    #include <windows.h>
    using namespace std;
    int main()
    {
     string antwort;
     
     do
     {
     cout << "Schleife beenden? (j/n)";
     cin >> antwort;
     }while(antwort == "n");
     system("PAUSE");
     return 0;
    }
    Sie soll einfach nur solange Fragen ob die Schleife beendet werden soll, wie "n" gedrückt wird.
    Die Commandozeile gibt mir aber einfach nur den Systemhalt aus (Drücken Sie eine beliebige
    Taste..) und beendet sich nach dem drücken.

    Hoffe ihr könnt mir schnell weiterhelfen!
    Liebe Grüße
     
  2. 19. April 2012
    AW: Fehler in einer gaaanz simplen Fußschleife

    Versuch mal:

    while(antwort == string("n"));

    ist nur so ins blaue geraten
     
  3. 19. April 2012
    AW: Fehler in einer gaaanz simplen Fußschleife

    Hab zwar nich die riesige Ahnung vom C++ bzw. von String, aber probier mal compare...
    string::compare - C++ Reference

    Code:
    
    #include <iostream>
    
    using namespace std;
    int main()
    {
     string antwort;
     do
     {
     cout << "Schleife beenden? (j/n)";
     cin >> antwort;
     }while(antwort.compare("j") != 0);
     return 0;
    }
    
    Wobei ich sagen muss, dass es bei mir funktioniert hat... (unter Linux )
     
  4. 19. April 2012
    AW: Fehler in einer gaaanz simplen Fußschleife

    Code:
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main() {
    
     string antwort;
     
     do {
    
     cout << "Schleife beenden? (j/n)";
     cin >> antwort;
    
     } while(antwort == "n");
     
     system("PAUSE");
    
     return 0;
    }
    Du hast hier 2 potentielle Fehlerquellen:

    a) Du sagst, dass er die Schleife ausführen soll solange Antwort GLEICH "n" ist. Was du willst ist aber die Schleife abbrechen wenn die Antwort GLEICH "n" ist.

    also:

    Code:
    } while(antwort != "n");
    Die Schleife läuft nun solange bis die Antwort "n" ist.

    b) Ich bin mir nicht sicher, ob man das in C++ so Vergleichen kann. Es gibt Sprachen in denen == nur die Referenz vergleicht, nicht den Inhalt. Ein Ansatz um das zu beheben wäre der von °EraZoR°. Ein Anderer wäre einen nativen Datentyp zu verwenden, welchen du dann mit dem == Operator tatsächlich auf den Inhalt vergleichen kannst:

    Code:
    [...]
    char antwort;
    [...]
    } while(antwort != 'n');
    [...]
    
    Zu b) Wobei ich mir bei C++ darüber nicht 100%tig im klaren bin, da ich es nicht programmiere. In Java trifft das mit den nativen Datentypen aber definitiv zu.


    Davon abgesehen ist alles was ich geschrieben habe ungetestet, aber die Ansätze sollten dich definitiv weiterbringen. Ansonsten warte einfach bis terraNova hier rein postet, der beschäftigt sich wesentlich mehr mit C/++


    Thx Murdoc, damit sind die beiden Sachen ausgeschlossen. Der Code scheint also wie gepostet zu funktionieren? Dann würde mir im Prinzip nicht viel einfallen warum er das nicht sollte
     
  5. 19. April 2012
    AW: Fehler in einer gaaanz simplen Fußschleife

    @Alex²:

    die schleife soll solange laufen bis `antwort` GLEICH "j" ist (siehe fragestellung in cout).

    und wegen "==": relational operators (string) - C++ Reference

    ---

    dein code lässt sich ohne probleme ausführen und arbeitet wie gewünscht.
    -> win7 x64 @ gcc 4.6.1 / mingw
     
  6. 22. April 2012
    AW: Fehler in einer gaaanz simplen Fußschleife

    Bevor ich was mit cin >> einlese sollte der eingabepuffer vorher gelöscht werden, nur mal um solche möglichen Fehler auszuschliessen.

    fflush(stdin);
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.