Kleines Programm funktioniert nicht...



  • Hallo,

    ich muss gerade für C++ lernen. Deshalb habe ich mir ein kleines Programm mit do und while Schleifen ausgedacht. Es ist ganz einfach: Wenn man eine Zahl eingibt, wird diese addiert und dann wird man gefragt, ob man weilter "addieren" möchte. Wenn nicht soll eben das Ergebnis rauskommen.

    Hier mein Quelltext:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main ()
    {
    int zahl1, erg ;
    char weiter; 
    
    erg=0;
    weiter="j";
    
    cout << "erg" << ;
    
    do
    {
    
    cout << "Soviel draufrechnen\n" << endl;
    cin >> zahl1;
    
    erg=erg+zahl1;
    
    }
    while (weiter=="j");
    
        system("PAUSE");
        return 0;
    }
    

    Bei der Zeile weiter="j" bleibt der Compiler immer hängen. Ich danke für eure Hilfe!



  • du musst das j in hochkommas setzen 'j' damit es als char erkannt wird. Alles was in Anführungszeichen steht wird als char* erkannt.



  • Hallo,

    vielen vielen Dank für die Antwort! Du hast recht mit den Hochkommas! Juhu...jetzt bin ich schon einige Schritte weitergekommen.

    Vielen Dank!



  • Anstelle von "\n" kannst du in C++ auch den Endline-Manipulator (endl) benutzen.
    System("PAUSE") ist zu meiden, da dieser Befehl nur unter DOS und Windows funktioniert, Linux macht da gar nichts. Les' am Besten mal das hier: http://www.gidnetwork.com/b-61.html

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main ()
    {
    int zahl1, erg=0 ;
    char weiter;
    
    erg=0;
    weiter='j';
    
    do
    {
    
    cout << "So viel draufrechnen: " ;
    cin >> zahl1;
    cout << "\n" ;
    
    erg=erg+zahl1;
    
    cout << "Noch einmal (J/N)? " ;
    cin>>weiter;
    cout << "\n" ;
    
    }
    while (weiter=='j' || weiter=='J');
    
        cout << erg << "\n\n" ;
    
        system("PAUSE");
        return 0;
    }
    


  • Phisherman schrieb:

    Anstelle von "\n" kannst du in C++ auch den Endline-Manipulator (endl) benutzen.

    Das tut man aber nicht, endl ist namelich ein '\n' << std::flush, und daher sehr ineffizient! ⚠



  • OK, danke!



  • Danke nochmal für die Antworten!



  • delete



  • Hallo, übe an den Verzweigungen und habe dazu ein einfaches ausbaufähigens Programm geschrieben. Aber beim Kompilieren gibt er mir immer eine Fehlermeldung aus...

    Danke für Hilfe!

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        char tora, torb, torw;
        int erg=0;
    
        while (erg < 4)
        {
               cout << "In welches Tor ist der Ball gefallen - tora oder torb?/n";
               cin >> torw;
    
               if (torw='tora')
               {
                               cout << "Der Ball ist in das Tor A gefallen/n";
                               erg++;
    
               }
               else if (torw='torb')
               {
                               cout << "Der Ball ist in das Tor B gefallen/n";
                               erg++;
    }              
        system("PAUSE");
        return EXIT_SUCCESS;
    
    }
    


  • Der Fehler liegt im Misverständnis von "char" (und Verwechslung mit strings) und passenden Anführungszeichen sowie Vergleichsoperator. Lies dir die Kapitel noch mal durch.
    Folgende Zeilen (und Ähnliche) sind auszubesseren:

    char torw;
    ///
    if(torw = 'tora') ///
    


  • Geflügeldipp schrieb:

    beim Kompilieren gibt er mir immer eine Fehlermeldung aus...

    Wann lernen die Leute endlich, ihre Fehlermeldungen zu posten? 🙄



  • Hallo,

    danke...Problem habe ích jetzt verstanden...


Anmelden zum Antworten