Werte in einer for-Schleife addieren



  • Hallo zusammen,

    ich möchte folgende Problemstellung lösen:
    In einer for-Schleife sollen n Zahlen miteinander addiert werden. Die Menge n wird dabei durch den Benutzer eingegeben. Mein Grundgerüst bisher sieht wie folgt aus:

    include <iostream>
    int main()
    {
      int n,val;
      std::cout<<"Wie oft addieren?\n";
      std::cin>>n;
      for(int i=1;(i-1)<n;i++)
      {
        std::cout<<"Wert "<<n<<": ";
        std::cin>>val
        /* Menge n einlesen, addieren und ausgeben. Bei n=5 und den Eingaben 
         1,2,3,4,5 soll also nur die 15 ausgegeben werden. */
      }
    }
    

    Leider weiß ich nicht, wie ich das realisieren soll. Anlegen von Variabeln für jede mögliche Menge n ist keine Option, aber um später z.B. 10 Zahlen zu addieren, muss ich doch immer irgendwo ein Zwischenergebnis speichern? Wie kann ich diese Aufgabe mit einfachen Mitteln lösen? Freue mich über Antworten 🙂



  • svloga schrieb:

    muss ich doch immer irgendwo ein Zwischenergebnis speichern?

    Ja sicher, und zwar die bisherige Zwischensumme. Es gibt keinen Grund die einzelnen eingebenen Zahlen zu speichern, wenn du sie danach nicht mehr brauchst (könntest du aber prinzipiell mit einem Container wie std::vector machen).



  • sum+=val



  • Und wie ist das bei einer Division? Wenn ich da z.B. drei Zahlen 2,3 und 4 eingebe ist das Ergebnis nicht wie erwartet 2/3/4=0.166667 sondern 0.0416667 (also 1/2/3/4). Bei 4 Zahlen 6,7,8,9 ist es nicht 0.01190, sondern wieder 1/6/7/8/9. Mein Programm:

    include <iostream>
    int main()
    {
      int n;
      double val, x;
      std::cout<<"Wie oft addieren?\n";
      std::cin>>n;
      for(int i=1;(i-1)<n;i++)
      {
        std::cout<<"Wert "<<n<<": ";
        std::cin>>val
        x=x/val    
      }
      std::cout<<x;
    }
    

    Ich habe auch x testweise mit 1 oder 1.0 initialisiert, kommt aufs gleiche heraus. Irgendwie hängt es ja damit zusammen, nehme ich an? Aber auf 0 setzen bringt natürlich 0, denn 0/x ist immer noch 0.

    Ich fürchte es ist ganz einfach, aber ich komme nicht darauf.



  • svloga schrieb:

    Ich habe auch x testweise mit 1 oder 1.0 initialisiert, kommt aufs gleiche heraus. Irgendwie hängt es ja damit zusammen, nehme ich an?

    Wenn du 1/2/3/4 rechnest, kommt das eben auch raus. An dem "irgendwie" störe ich mich etwas, was ist denn daran noch nicht klar? Geh das Programm einfach schrittweise durch und vollziehe nach, was passiert. Jedenfalls musst du hier dir erste Eingabe anders als die folgenden behandeln.

    svloga schrieb:

    Ich habe auch x testweise mit 1 oder 1.0 initialisiert, kommt aufs gleiche heraus.

    Den Wert einer uninitialisierten Variable darfst du nicht nutzen.

    Zählschleifen übrigens bitte so:

    for(int i=0;i<n;i++)
    

    oder so:

    for(int i=1;i<=n;i++)
    


  • Mach eine Fallunterscheidung für die erste Eingabe.
    Da setzt du x auf den Eingabewert
    In allen anderen Fällen machst du die Division.


Log in to reply