Durchschnittsberechnung eines Arrays



  • Hallo Community,

    ich habe hier ein Problem bei der Berechnung des Durchschnitts eines Arrays
    Als Info : Bin noch nicht so drin in der Programmierung also kotzt euch über meinen Code aus 😃 und die obigen zwei Funktionen nicht beachten .

    Freu mich auf Lösungswege

    Danke schonmal für Antworten

    include<iostream>
    #include<iomanip>
    #include<cstdlib>
    
    double max_such(double adUmsatz[], int iAnzahl);
    double min_such(double adUmsatz[], int iAnzahl);
    
    using namespace std;
    
    int main ()
    {
    	const int size = 4 ;
    	double adUmsatz[size];
    	double DurchUmsatz = 0;
    	int i ;
    
    	for ( i = 0 ; i < size ;++i )
    	{
    		cout<<" Geben Sie den Umsatz fuer das "<<i+1<<"ste Quartal ein  : ";cin>>adUmsatz[i];
    	}
    
    	// Möglochkeit aus dem Internet die nicht Funktioniert 
    
    	for ( i = 0 ; i <= size ; i++ )
    	{
    		DurchUmsatz += adUmsatz[size];
    	}
    
    	cout<<" Durchschnittlicher Quartal Umsatz  : " <<DurchUmsatz / 4 <<endl;
    
    	// Meine eigene Möglichkeit ganz stumpf
    
    	DurchUmsatz = adUmsatz[size] / 4 ;
    	cout<<" Durchschnittlicher Quartal Umsatz  : " <<DurchUmsatz <<endl;
    
    	cin.get();
    	cin.get();
    	return 0 ;
    }
    


  • Kannst ja mal ein bisschen selber überlegen: prinzipiell ist die "Möglochkeit aus dem Internet die nicht Funktioniert" ja nicht so schlecht: alle Werte aus dem Array addieren und das Ergebnis durch die Anzahl der Einträge teilen. Oder?

    Warum stimmt es trotzdem nicht?
    Tipp: man kann sich Zwischenwerte, Variablen und allerlei anderes auch probehalber ausgeben lassen.

    Über Deinen Ansatz decken wir "ganz stumpf" das Mäntelchen des Schweigens...



  • Bei adUmsatz[size] greifst du auf deas Element mit dem Index size des Arrays adUmsatz zu.

    Da du das Array aber mit double adUmsatz[size]; definiert hast (das size ist identisch), existiert das Element adUmsatz[size] aber nicht.

    double adUmsatz[size];
        double DurchUmsatz = 0;
        int i ;
    
        for ( i = 0 ; i < size ;++i )
        {  //           ^^             Schau mal hier  ...
            cout<<" Geben Sie den Umsatz fuer das "<<i+1<<"ste Quartal ein  : ";cin>>adUmsatz[i];
        } //                                                                                 ^^^^ ... und hier ...
    
        // Möglochkeit aus dem Internet die nicht Funktioniert
    
        for ( i = 0 ; i <= size ; i++ )
        { //            ^^             ... und hier  ...
            DurchUmsatz += adUmsatz[size];
        }//                        ^^^^ und hier
    

    Du möchtest in den zwei Schleifen auf dieselben Element zugreifen.



  • Hallo DirkB ,

    danke für deine Antwort habe es jetzt nochmal überarbeitet.
    Manchmal kommen die richtigen Zwischenergebnisse raus manchmal nicht 😕
    z.B. wenn ich für jedes Quartal 5 eingebe kommt am Schluss 20 für die addierung der Arrays raus und 5 für den durchschnitt raus was richtig ist

    Aber wenn ich z. B. 1,6,4,1 eingebe müsste theoretisch 12 und 3 rauskommen, was aber raus kommt ist für die addierung 4 und für den durchschnitt 1

    Bin noch absoluter Anfänger
    Was mach ich falsch ? Ich denke der Fehler liegt in der Bedingen der for schleife

    Hier nochmal der Code :

    for (int  i = 0 ; i < size ;++i )
    	{
    		cout<<" Geben Sie den Umsatz fuer das "<<i+1<<"te Quartal ein  : ";cin>>adUmsatz[size];
    	}
    
    	for (int i = 0 ; i < size ; i++ )
    	{
    		DurchUmsatz += adUmsatz[size];
    	}
    	cout<<DurchUmsatz<<endl;
    
    	cout<<" Durchschnittlicher Quartal Umsatz  : " <<DurchUmsatz / 4<<endl;
    


  • Moritz Vogt schrieb:

    Was mach ich falsch ?

    Immer noch dasselbe. Du greifst auf adUmsatz[size] statt auf adUmsatz[i] zu.



  • Danke dir für die nette Hilfe 😃

    Bin noch nicht so bewandert mit den Arrays

    Nochmals Danke Schönen Tag noch



  • Moritz Vogt schrieb:

    Was mach ich falsch ? Ich denke der Fehler liegt in der Bedingen der for schleife

    Die hast du richtig korrigiert.
    Beim Index hast du leider das Falsche gewählt.


Anmelden zum Antworten