C++ Programm zum Aufsummieren

Gast #3864398
Hi, habe versucht ein C++ Programm zu schreiben, das mir natürliche 
Zahlen bis zu einer bestimmten natürlichen Zahl aufsummiert:

Also z.B. bei n=5: 1+2+3+4+5=15

Nur scheint das bei mir nicht zu funktionieren:
1
#include <iostream>
2
using namespace std;
3

4
int n;
5
int x = 1;
6
int i = 0;
7

8
int main()
9
{
10
  cout << "Bis zu welcher Zahl soll aufaddiert werden?" << endl;
11
  cin >> n ;
12

13
  while( x <= n)
14
    i = i + x;
15
    x = x + 1;
16

17
  cout << i  << endl;
18

19
}
Bei diesem Programm wird zwar der Wert n abgefragt, ein Ergebnis 
erscheint aber nicht.
Kann mir jemand den/die Fehler sagen?

LG
Gast
Fehler1: Keine Code-Tags verwendet
Fehler2: Keine Klammern gesetzt.

Hättest du Fehler 2 nicht gemacht, dann hättest du gemerkt, dass du 
eigentlich
1
#include <iostream>
2
using namespace std;
3

4
int n;
5
int x = 1;
6
int i = 0;
7

8
int main()
9
{
10
  cout << "Bis zu welcher Zahl soll aufaddiert werden?" << endl;
11
  cin >> n ;
12

13
  while( x <= n)
14
  {
15
    i = i + x;
16
  }
17
  x = x + 1;
18

19
  cout << i  << endl;
20

21
}
geschrieben hast.

Das x=x+1; ist außerhalb der While-Schleife und wird somit niemals 
ausgeführt.

lg
Gast
Udo Schmitt (urschmitt) schrieb:

Heyho schrieb:
>> Auf die Klammer wär ich jetzt
>> gar nicht gekommen

> Dann brauchst du dringend ein Grundlagenbuch und solltest es auch lesen.
> C++ mit Trial and Error lernen wird nix.

Kann man so nicht sagen. Trial and Error macht JEDER beim Programmieren 
immer wieder, einfach indem man schaut, ob das rauskommt was man 
erwartet. Wenn man hier die Threads mitliest wird das in so ziemlich 
allen Fällen wenn was nicht läuft auch bestätigt. Nur wie hier die 
Klammern mal eben wegzulassen ist schon kein "Trial and Error" mehr, 
sondern Missachtung der elementarsten Grundregeln bereits bei C und 
nicht erst bei C++.
war das euler oder gauß die auf die nette formel
gekommen sind?
das wäre sicher kürzer zu implementieren - wenn auch nicht so wie es 
(wahrscheinlich) erwartet war ;-)

ohne schleife:
1
i = ((n * ++n) >> 1);
Moderator
Programmierer schrieb:
> Macht nichts, Trial & Error zeigt dass es funktioniert.

Na, dann trialen wir mal:
1
$ cat >trial.cpp
2
#include <iostream>
3
using namespace std;
4

5
int main() {
6
  int n, i;
7

8
  cout << "Größter Summand:   ";
9
  cin >> n;
10
  cout << "Summe von 1 bis " << n << ": ";
11
  i = ((n * ++n) >> 1);
12
  cout << i << endl;
13
  return 0;
14
}
15

16
$ g++ -Wall -O2 -o trial trial.cpp
17
trial.cpp: In function ‘int main()’:
18
trial.cpp:10:23: warning: operation on ‘n’ may be undefined [-Wsequence-point]
19
   i = ((n * ++n) >> 1);
20
                       ^
21
$ # Häh??? Blöder Labersack -> ignorieren und weiter
22
$ trial
23
Größter Summand:   5
24
Summe von 1 bis 5: 18
25
$ # Huch??? Naja, nur ein kleiner Rundungsfehler -> Programm kann verkauft werden

;-)
Max H. schrieb:
> P. M. schrieb:
>> Bauteiltöter schrieb:
>>> Fehler1: Keine Code-Tags verwendet
>>
>> Was bitteschön sind "Code-Tags"?
1
C-Code

Achso...wurde mittlerweile korrigiert, konnte ich also nicht mehr 
nachvollziehen. Habe schon befürchtet, da habe sich wieder jemand einen 
speziellen Begriff ausgedacht, um seine Kompetenz hochzuskillen ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.