Warum funktioniert mein Code nicht?



  • Kürzer:

    int summieren()
    {
    	int sum = 0;
    	int zahl = 0;
    
    	do
    	{
    		sum += zahl;
    
    		std::cout << "Zahl: ";
    		std::cin >> zahl;
    	} while(zahl > 0);
    
    	return sum;
    }
    


  • Ich vermute mal dir liegt daran deinen eigenen Ansatz zum Laufen zu bringen, daher will ich noch auf den Fehler in der while Bedingung hinweisen.

    while(loopCount = 0)
    

    soll wohl

    while(loopCount == 0)
    

    heißen



  • Habe meinen Code jetzt so verändert:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    
    using namespace std;
    
    int value;
    int summe;
    
    int summieren()
    {
    
        int loopCount;
        loopCount = 0;
    
        while(loopCount = 0)
        {
            cout << "Zahl eingeben:" << endl;
            cin >> value;
    
            if (value < 0)
            {
                break;
            }
            else
            {
                summe = summe + value;
            continue;
            }
    
        }
        return summe;
    }
    
    int main()
    {
     int summe = summieren();
    
     cout << "Die Summe betraegt:" << endl;
     cout << summe;
        return 0;
    }
    

    Läuft aber immer noch nicht 😞 Kann das jemand anhand meines Codes erklären??



  • Siehe hmpfs Beitrag. Du vergleichst loopCount nicht mit 0, sondern weist loopCount 0 zu!



  • Ließt du nicht was andere schreiben?

    while( loopCount = 0 )
    

    ist eine Zuweisung und ergibt immer true....
    du meinst

    while( loopCount == 0 )
    

    Lg freeG

    EDIT:

    Wieso nimmst du eigentlich globale Variablen?
    Und wieso machst nicht einfach

    while( true )
    

    , sondern mit dem loopCount das du eh nie änderst? Du beendest die Schleife ja nur durch break.
    Und das continue ist auch unnötig;)



  • fr33g schrieb:

    Ließt du nicht was andere schreiben?

    while( loopCount = 0 )
    

    ist eine Zuweisung und ergibt immer true false....



  • Der Zuweisungsoperator gibt eine Referenz auf das geänderte Objekt zurück.

    EDIT: Zu langsam.



  • EOutOfResources schrieb:

    Der Zuweisungsoperator gibt eine Referenz auf das geänderte Objekt zurück.

    Und was will das jetzt aussagen? Die geänderte Variable wurde auf 0 gesetzt - und 0 gilt in der Logik von C++ als false und alle anderen Werte als true .



  • CStoll schrieb:

    Und was will das jetzt aussagen?

    fr33g schrieb:

    while( loopCount = 0 )
    

    ist eine Zuweisung und ergibt immer true....

    🙄



  • drakon schrieb:

    fr33g schrieb:

    Ließt du nicht was andere schreiben?

    while( loopCount = 0 )
    

    ist eine Zuweisung und ergibt immer true false....

    Jap sorry mein Fehler, ergibt immer true außer wenn die 0 zugewiesen wird wie in diesem Fall 😉

    EOutOfResources schrieb:

    CStoll schrieb:

    Und was will das jetzt aussagen?

    fr33g schrieb:

    while( loopCount = 0 )
    

    ist eine Zuweisung und ergibt immer true....

    🙄

    Und was soll das? Es hat mich doch drakon schon drauf aufmerksam gemacht, das reicht wie ich finde. Ist total unnötig 😉

    Lg freeG



  • fr33g schrieb:

    Und was soll das? Es hat mich doch drakon schon drauf aufmerksam gemacht, das reicht wie ich finde. Ist total unnötig 😉

    Ich habe seinen Post noch nicht gesehen als ich auf "Auf Beitrag antworten" geklickt habe.



  • Habs hier mal gebastelt: http://ideone.com/SJnx8



  • EOutOfResources schrieb:

    fr33g schrieb:

    Und was soll das? Es hat mich doch drakon schon drauf aufmerksam gemacht, das reicht wie ich finde. Ist total unnötig 😉

    Ich habe seinen Post noch nicht gesehen als ich auf "Auf Beitrag antworten" geklickt habe.

    Ok sorry, dass wusste ich natürlich nicht 😋 😉

    Lg freeG


Anmelden zum Antworten