Programm zur Bildung der Summe 1+2+3+4+...+n



  • aknn mir jemand sagen wo der dehler des Programmes ist?

    #include <iostream>
    using namespace std;	
    
    int main()
    {
    	// Summe der Reihe 1 + 2 + 3 + ... + n:
    	char ans = 'N';
    	string header = "***** Spezialfall der arithm. Reihe *****\n\n";
    
    	cout << header << "\ts = 1 + 2 + 3 + ... + n = n(n+1)/2";
    
    	while ( 1 )	// Abbruch der Endlosschleife mit Strg+C
    				// oder geschickter: Anwender befragen
    	{
    		int n, i = 1;
    		cout << "\n\nBitte geben Sie eine positive Ganzzahl ein: ";
    		cin >> n; cin.sync();	// Return aus Eingabepuffer entfernen
    
    		long sum = 0;	// Summe
    
    		while (i <= n)	// solange i <= n
    			sum += i++;	// nach der Summenbildung wird i inkrementiert
    
    						// Alternative:
    						//{
    						//	sum += i;
    						//	i++;
    						//}
    
    		cout << "Die Summe der ersten " << n << " Ganzzahlen ist " << sum << endl;
    
    		// PROBE:
    		cout << "PROBE: Die geschlossene Loesung lautet: n(n+1)/2 = " << n*(n+1)/2 << endl;
    
    		// Anwender befragen
    		cout << "\nWollen Sie eine weitere Berechnung durchfuehren [j|n]?\t";
    		cin >> ans;
    		if ( ans == 'n' || ans == 'N' )	// hier: Abfrage der Abbruchbedingung
    			break;	// main-loop verlassen
    	}
    
    	cout << "Vielen Dank fuer die Benutzung des Programms!" << endl;
    
    return 0;
    }
    


  • Wenn du uns verräts was du für ein Problem hast!?



  • Ich denke mal, dass hier der Fehler liegt:

    sum += i++;
    

    Weil da kein Vorzeichen bzw. Rechenzeichen davor ist.

    So sollte es aussehen:

    i++;  
    sum +=i;
    

    Ansonsten wäre es wirklich hilfreich, dein Problem zu schildern!

    Ahhh, Bullshit, sorry...

    Du hast vergessen die #include <string> zu includieren.

    Der Datentyp string wird dann verfügbar...

    Also
    #include <iostream>
    #include <string>

    Lg Mentras



  • Mentras schrieb:

    Du hast vergessen die #include <string> zu includieren.

    Danke! Das war der Fehler!



  • 🙂



  • btw. dafür gibts auch ne schicke formel:
    n*(n+1)/2



  • @ Fencer: schau mal in seinen Code er hat diese Funktion auch eingebaut um seinen iterativen ansatz zu prüfen 😉

    cout << "PROBE: Die geschlossene Loesung lautet: n(n+1)/2 = " << n*(n+1)/2 << endl;
    


  • Mentras schrieb:

    Ich denke mal, dass hier der Fehler liegt:

    sum += i++;
    

    Weil da kein Vorzeichen bzw. Rechenzeichen davor ist.

    So sollte es aussehen:

    i++;  
    sum +=i;
    

    Das kannst du auch so notieren (wenn also i vor der Zuweisung inkrementiert werden soll):

    sum+=++i;
    

    Was du mit Vorzeichen und Rechenzeichen meinst, weiß ich jetzt nicht... 😉



  • ah ja ok. vorschnell 🕶



  • [quote="_matze"]

    Mentras schrieb:

    Ich denke mal, dass hier der Fehler liegt:

    Das kannst du auch so notieren (wenn also i vor der Zuweisung inkrementiert werden soll):

    sum+=++i;
    

    Was du mit Vorzeichen und Rechenzeichen meinst, weiß ich jetzt nicht... 😉

    Ich verbocke doch immer wieder alles 😕

    Dachte das würde der Compiler würde es so annehmen: sum = sum i++
    War wohl wieder falsch^^


Anmelden zum Antworten