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^^