Programm stürzt am Schluss einfach ab. :(



  • Hallo bei dem Folgenden Programm stürzt es am schluss einfach ab.

    Ich führe es in der Konsole aus.
    Gebe die erste Zahl ein und drücke Enter.
    Gebe die 2. Zahl ein und drücke Enter.

    Und dann schließt es sich einfach!! dabei soll es doch noch das Ergebnis zurück geben!!! 😕

    Das gleiche Problem habe ich beim Hallo Welt "Programm" das Programm öffnet sich für eine millisekunde und schließt sich gleich wieder! 😞

    Was mache ich nur falsch...

    /* Dies ist mein 2. Pogramm was ich je geschrieben habe */
    /*******************************************************/
    
    #include <iostream>
    using namespace std; 
    int main()
    {
        int zahl1;
        int zahl2;
        int ergebnis= zahl1 + zahl2 ;
    
        cout << "Bitte geben Sie die 1. Zahl ein!\n";
        cin >>  zahl1;
    
        cout <<"Bitte geben Sie die 2. Zahl ein!\n";
        cin >>  zahl2;
    
            cout << "Das Ergebnis ist:" << ergebnis;   
    }
    

    Und noch eine Frage beschäftig mich. Was bedeutet ein return= -1 oder ein return= 0 am Ende eines Programms?



  • Das ist normal bei Konsolen-Aplikationen. Entweder die Programme aus der Konsole heraus aufrufen oder hier mal nachschauen.

    Caipi



  • Achso!

    Einfach noch ein Cin einfügen...

    /* Dies ist mein 2. Pogramm was ich je geschrieben habe */
    /*******************************************************/
    
    #include <iostream>
    using namespace std; 
    int main()
    {
        int zahl1;
        int zahl2;
        int ergebnis= zahl1 + zahl2 ;
        char schluss;
    
        cout << "Bitte geben Sie die 1. Zahl ein!\n";
        cin >>  zahl1;
    
        cout <<"Bitte geben Sie die 2. Zahl ein!\n";
        cin >>  zahl2;
    
            cout << "Das Ergebnis ist:" << ergebnis;
            cin >> schluss;   
    }
    

    Dann gibt er das Ergebnis aus. Doch wenn ich jetzt 5+5 rechnen will, dann kommt ein 10 stelliges Ergebnis raus. *grübel*



  • Deine Abfolge stimmt ja auch noch nicht von der Reihenfolge. Wie soll dein PC denn zwei Zahlen zusammenrechnen, die du noch nicht eingegeben hast?



  • Siege schrieb:

    Achso!

    Einfach noch ein Cin einfügen...

    /* Dies ist mein 2. Pogramm was ich je geschrieben habe */
    /*******************************************************/
    
    #include <iostream>
    using namespace std; 
    int main()
    {
        int zahl1;
        int zahl2;
        int ergebnis= zahl1 + zahl2 ;
        char schluss;
        
        cout << "Bitte geben Sie die 1. Zahl ein!\n";
        cin >>  zahl1;
        
        cout <<"Bitte geben Sie die 2. Zahl ein!\n";
        cin >>  zahl2;
            
            cout << "Das Ergebnis ist:" << ergebnis;
            cin >> schluss;   
    }
    

    Dann gibt er das Ergebnis aus. Doch wenn ich jetzt 5+5 rechnen will, dann kommt ein 10 stelliges Ergebnis raus. *grübel*

    Das liegt daran, dass lokale Variablen bei ihrer definition einen undefinierten Wert haben.

    Dein Fehler ist, dass du erst die beiden undefinierten Werte addierst (und in Ergebnis speicherst) und dann die korrekten Zahlen zum addieren einliest.

    Korrekt sollte es heißen:

    #include <iostream>
    using namespace std; 
    int main()
    {
        int zahl1;
        int zahl2;
        char schluss;
    
        cout << "Bitte geben Sie die 1. Zahl ein!\n";
        cin >>  zahl1;
    
        cout <<"Bitte geben Sie die 2. Zahl ein!\n";
        cin >>  zahl2;
    
        // Hier addieren:
        int ergebnis = zahl1 + zahl2;
    
            cout << "Das Ergebnis ist:" << ergebnis;
            cin >> schluss;
        return 0;
    }
    

    Caipi



  • Caipi: Bitte verabschiede dich von dem Stil, Variablen am Blockanfang zu definieren. Mach das erst dann, wenn du sie auch wirklich brauchst.



  • "cin >> schluss" reicht nicht, ich dachte Caipi hat oben schon den richtigen Link gepostet. Habt ihr den Text gelesen 😕

    MfG SideWinder



  • Michael E. schrieb:

    Caipi: Bitte verabschiede dich von dem Stil, Variablen am Blockanfang zu definieren. Mach das erst dann, wenn du sie auch wirklich brauchst.

    Habe den Code von Siege bis auf die Zeile

    int ergebnis = zahl1 + zahl2;
    

    1:1 übernommen. Ich für mich mache es so wie du gesagt hast. (War nur zu faul es bei Siege's Code noch zu ändern...)

    /edit:

    SideWinder schrieb:

    "cin >> schluss" reicht nicht, ich dachte Caipi hat oben schon den richtigen Link gepostet. Habt ihr den Text gelesen 😕

    MfG SideWinder

    Doch, ich kenne den Text. War aber zu sehr auf das

    Siege schrieb:

    Dann gibt er das Ergebnis aus. Doch wenn ich jetzt 5+5 rechnen will, dann kommt ein 10 stelliges Ergebnis raus. *grübel*

    fixiert und habe somit das cin >> schluss verdrängt. 🙄

    Caipi


Anmelden zum Antworten