Durchschnitt berechnen



  • Ich habe eine Frage zu folgendem Programmm, welche den Durchschnitt von 2 Eingabezahlen berechnen soll. Der Code lautet wie folgt:

    #include <iostream>		
    
    using namespace std;	
    
    // Durchschnitt berechnen von Z mithilfe for-Schleife
    
    float Durchschnitt_FOR(int start, int end) // Muss nochmal deklariert werden mit a=start und b=end
    {
    	float summe = 0;  // Wieso muss das gemacht werden? Wie kann ich mir merken und verstehen das es gemacht werden muss ?
    
    	for (int i=start; i<=end; i=i+1) // Gilt i+1 <-> i++?
    	{
    		summe = summe + i;
    	}
    
    	int anzahl = end - start + 1; // Wie kommt man auf diesen Ansatz?
    
    	float durchschnitt = summe/anzahl;
    
    	return durchschnitt;
    }
    
    // Hauptprogramm
    
    main()
    {
            int a;
            cout << "Wert 1 eingeben: ";
            cin >> a;
    
            int b;
            cout << "Wert 2 eingeben: ";
            cin >> b;
    
    		cout << "Durchschnittswert mithilfe for-Schleife lautet: " << Durchschnitt_FOR(a,b)<< endl;
    
        cin.sync();
        cin.get();
        return 0;
    }
    

    Kann mir jemand bitte meine kommentierten Fragen beantworten, den auf solch einen Ansatz würde ich nie selbst draufkommen.


  • Mod

    Gilt i+1 <-> i++?

    Nein, i = i + 1 ist dasselbe wie ++i .

    Die Funktion ist im Übrigen völlig schwachsinnig. Wieso nicht die triviale Lösung (a+b)/2?

    Wieso muss das gemacht werden? Wie kann ich mir merken und verstehen das es gemacht werden muss ?

    Wie wäre es, wenn du dir ein Buch über C++ besorgst, dass dir alle deine Fragen über die Sprache beantwortet?



  • ZetaGamma schrieb:

    Wieso muss das gemacht werden? Wie kann ich mir merken und verstehen das es gemacht werden muss ?

    Jede Variable muss (sollte) vor dem ersten Lesezugriff einen definierten Wert haben.
    0 ist für eine Summe keine schlechte Wahl.

    ZetaGamma schrieb:

    // Wie kommt man auf diesen Ansatz?

    Überlegen und nachdenken. Mit wenigen Werten durchspielen. Z.B. zwei Zahlen 1 bis 2. end - start ergibt 2 - 1 = 1 . Das ist einer zuwenig.
    Oder 1 bis 10(zehn Zahlen) dann hast du bei 10-1=9. Auch einer zuwenig. DArum noch die +1

    Und noch eine Überlegung mit 0 und negativen Zahlen. -2 bis 0 ( 3 Zahlen) 0 - -2 +1 = 3. Passt.



  • #include <iostream>		
    
    using namespace std;	
    
    // Durchschnitt berechnen von Z mithilfe for-Schleife
    
    float Durchschnitt_FOR(int start, int end) //das in Klammer sind die übergebenen Parameter a, b 
    //du kannnst Sie auch anderst nennen...hier wurden Sie halt start und end gennant
    {
    	float summe = 0;  // Damit ein definierter Wer vorliegt, ansonsten steht dort eine beliebige Zahl drin ?
    
    	for (int i=start; i<=end; i=i+1) // Gilt i+1 <-> i++?
    	{
    		summe = summe + i;
    	}
    
    	int anzahl = end - start + 1; // ist halt so,vielleicht kanns jeman anderes erklären
    
    	float durchschnitt = summe/anzahl;
    
    	return durchschnitt;
    }
    
    // Hauptprogramm
    
    main()
    {
            int a;
            cout << "Wert 1 eingeben: ";
            cin >> a;
    
            int b;
            cout << "Wert 2 eingeben: ";
            cin >> b;
    
    		cout << "Durchschnittswert mithilfe for-Schleife lautet: " << Durchschnitt_FOR(a,b)<< endl;
    
        cin.sync();
        cin.get();
        return 0;
    }
    


  • Dein Lösungsansatz ist wirklich super und erinnert mich an eine Geschichte, die über Carl Friedrich Gauß erzählt wird.

    http://de.wikipedia.org/wiki/Carl_Friedrich_Gau%C3%9F#Eltern.2C_Kindheit_und_Jugend

    Mathematik ist wohl nicht Dein Lieblingsfach.

    mfg Martin


  • Mod

    mgaeckler schrieb:

    Dein Lösungsansatz ist wirklich super und erinnert mich an eine Geschichte, die über Carl Friedrich Gauß erzählt wird.

    Diese Anekdote hat damit nichts zu tun. Die gaußsche Summenformel ist etwas völlig anderes.



  • Arcoth schrieb:

    mgaeckler schrieb:

    Dein Lösungsansatz ist wirklich super und erinnert mich an eine Geschichte, die über Carl Friedrich Gauß erzählt wird.

    Diese Anekdote hat damit nichts zu tun. Die gaußsche Summenformel ist etwas völlig anderes.

    Aha. Und was passiert in den Zeilen 11 bis 14 seines Programmes dann?

    mfg Martin



  • ZetaGamma schrieb:

    //aufsummieren
    	int anzahl = end - start + 1; // Wie kommt man auf diesen Ansatz?
    	float durchschnitt = summe/anzahl;
    

    Dabei waren bestimmt auch Verstöße gegen das BtMG am Werke.



  • es gilt üblicherweise:
    a = a $ b; ist gleichwertig wie a $= b;
    für fast alle operatoren anstelle von $ (ausnahmen sind = && || , < > <= >= == != )

    operatorüberladung könnte eine ausnahme darstellen.


Anmelden zum Antworten