Mittelwert berechnen



  • Hallo,
    Ich will das bei mir aus 10 Arrys ein Mittelwert ausgerechnen wird.
    Leider meine Programm rechen falsch udn ich wieß nciht wo das Problemm ist.
    Hir mein Cod

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	double zahl1[10];
    	int i;
    
    	for (i = 1; i <= 10; i++)
    		{	
    			cout << "Bitte Wert eingeben: " ;
    			cin >> zahl1[i];
    		}
    
    	double mittelwert = 0;
    	for (i= 1; i<= 10; i++)
    		{
    			mittelwert += zahl1[i];
    		}
    			cout << "Mittelwert: " << mittelwert/10.0 << endl;
    	return 0;
    }
    

    Danke

    MFG Progress



  • du beginnst bei dem array 2mal bei 1 statt bei 0 und gehst auch noch eins zu weit

    die array grenzen sind bei einem array mit n feldern: 0 -> n-1



  • int Array[10];
    //Array befüllen
    std::cout << "Mittelwert: " << std::accumulate(Array, Array + 10, 0.0f) / 10.0f;
    


  • Die Array Indizes beginnen bei 0, nicht bei 1.



  • EOutOfResources schrieb:

    int Array[10];
    //Array befüllen
    std::cout << "Mittelwert: " << std::accumulate(Array, Array + 9, 0.0f) / 10.0f;
    

    Bist du sicher, daß du nicht "Array+10" als Obergrenze meinst? Der End-Iterator zeigt traditionell hinter das letzte Element das betrachtet werden soll.



  • CStoll schrieb:

    Bist du sicher, daß du nicht "Array+10" als Obergrenze meinst?

    Ups, mein Fehler.



  • Ich beginne in for Schleife bei 1 weil wenn ich von 0-10 düch gehe sind es 11 schritte.
    Das Feller ist das der falsch rechnet.
    so siet es in Console aus.

    [nick@myhost ~]$ cd Desktop/
    [nick@myhost Desktop]$ g++ neu.cpp
    [nick@myhost Desktop]$ ./a.out 
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Bitte Wert eingeben: 5
    Mittelwert: 10
    


  • Für ein Array der Grösse 10 sieht die Schleife so aus:

    for(std::size_t i = 0; i < 10; i++)
    


  • 10 ist kein legaler Index, deshalb wäre es korrekter, wenn du von 0 bis 9 gehst (bzw. bis "i<10"). In deiner Schleife überschreibst du im letzten Schleifendurchlauf einen Wert, der außerhalb deines Arrays liegt (von deinem Ergebnis zu urteilen könnte das "mittelwert" sein).



  • Problemm Gelöst 🙂
    Danke sher allen an Ihre Hilfe

    MFG Progress


Anmelden zum Antworten