Warum funktioniert mein Code nicht?



  • Hey Leute,

    ich habe neulich angefangen mit C++ und wollte gerade eben ein kleines Programm schreiben, aber, obwohl keine Fehler angezeit werden, funktioniert es nicht richtig. ALso das Programm soll eigentlich nichts anderes machen, als die eingebenen Zahlen zu summieren bis der Benutzer eine negative Zahl eingibt. Allerdings zeigt er bei mir immer nur "Die Summe beträgt 0". Hier mal der Code

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

    VIELEN DANK AN JEDEN DER MIR HILFT IM VORAUS!!



  • #include <iostream>
    
    using namespace std;
    
    int summieren()
    {
    	int sum = 0;
    
    	while (true)
    	{
    		int zahl;
    		std::cout << "Zahl: ";
    		std::cin >> zahl;
    
    		if (zahl < 0)
    			break;
    
    		sum += zahl;
    	}
    
    	return sum;
    }
    
    int main()
    {
    	int sum = summieren();
    
    	std::cout << "Die Summe betraegt: ";
    	std::cout << sum << std::endl;
    
    	return 0;
    }
    


  • Vielleicht solltst du dir nochmal ansehen, wie man Funktionen aufruft. Außerdem solltest du das Ergebnis entweder als Rückgabewert oder Referenzparameter nach außen geben.
    (und globale Variablen solltest du vermeiden)



  • 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