C++ Programm zum Aufsummieren

Gast #3864398
Lesenswert?

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 #3864403
Lesenswert?

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 #3864850
Lesenswert?

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++.
Moderator #3865917
Lesenswert?

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

;-)
#3865957
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren