Funktionen Mittelwerte berechnen



  • Hallo zusammen,
    ich habe ein Programm geschrieben zur Berechnung der verschiedenen Mittelwerte. Nun war es die Aufgabe, die Berechnungen in Funktionen auszulagern. Jedoch funktioniert mein Code nicht. Was habe ich da falsch gemacht?

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    void arithmetischerMW();
    void geometrischerMW();
    void harmonischerMW();
    
    int main()
    {
    
    	int AuswahlMW;
    
    	cout << "Um den arithmetischen Mittelwert zu berechnen, druecken sie 1! " << endl;
    	cout << "Um den geometrischen Mittelwert zu berechnen, druecken sie 2! " << endl;
    	cout << "Um den harmonischen Mittelwert zu berechnen, druecken sie 3! " << endl;
    	cin >> AuswahlMW;
    
    	if (AuswahlMW == 1)
    	{
    		void arithmetischerMW();
    
    	}
    
    	else if (AuswahlMW == 2)
    	{
    		void geometrischerMW();
    
    	}
    
    	else if (AuswahlMW == 3)
    	{
    		void harmonischerMW();
    
    	}
    
    
    	system("PAUSE");
    	return 0;
    }
    
    
    void arithmetischerMW()
    {
    	double Summe = 0;
    	double aMW;
    	int i;
    
    	for (i = 0; i < 32; i++)
    	{
    		Summe = Summe + (i * 3);
    
    	}
    
    	aMW = Summe / i;
    	cout << "Der arithmetische Mittelwert ist: " << aMW << endl;
    
    }
    
    void geometrischerMW()
    {
    	double Produkt = 1;
    	double gMW;
    	int i;
    
    	for (i = 1; i < 32; i++)
    	{
    		Produkt = Produkt * (i * 3);
    
    	}
    
    	gMW = pow(Produkt, 1.0 / i);
    	cout << "Der geometrische Mittelwert ist: " << gMW << endl;
    
    }
    
    void harmonischerMW()
    {
    	double Summe = 0.0;
    	double hMW;
    	int i;
    
    	for (i = 1; i < 32; i++)
    	{
    		Summe = Summe + 1 / (i * 3.0);
    
    	}
    
    	hMW = i / Summe;
    	cout << "Der harmonische Mittelwert ist: " << hMW << endl;
    
    }
    


  • @jand61 sagte in Funktionen Mittelwerte berechnen:

    funktioniert mein Code nicht

    Hei├čt was?



  • Du solltest noch mal nachschauen, wie man Funktionen richtig aufruft (Zeile 21 / 27 / 33).
    Mit z.B. void geometrischerMW(); deklarierst du die Funktion (so wie du es ja in den Zeilen 5-7 auch schon getan hast).



  • Ach stimmt, da habe ich aus Versehen den Funktionstyp dazugeschrieben... danke ­čÖé



  • @jand61 sagte in Funktionen Mittelwerte berechnen:

    int i;

    for (i = 1; i < 32; i++)
    {
    Summe = Summe + 1 / (i * 3.0);

    }

    hMW = i / Summe;

    Brrr! Es ist ├Ąu├čerst h├Ąsslich & fehleranf├Ąllig, Schleifenvariablen noch f├╝r etwas anderes als die Schleife selbst zu missbrauchen! Mach das nicht!

    Wo kommt in deinem Code eigentlich die 32 und die 3 her? W├Ąren die Funktionen zur Mittelwertberechnung nicht n├╝tzlicher, wenn sie die Zahlen, deren Mittelwert sie berechnen sollen, als Eingabeparameter h├Ątten? (es b├Âten sich 2 Iteratoren als Parameter an).



  • Die 32 und die 3 kommen aus einer vorherigen Aufgabe und sollten so ├╝bernommen werden.
    Wie w├Ąre die bessere L├Âsung den i Wert aus der Schleife auszulesen? In der Schleife einen Parameter pro Schleifendurchlauf hochz├Ąhlen zu lassen und dann auslesen?



  • @jand61 sagte in Funktionen Mittelwerte berechnen:

    Die 32 und die 3 kommen aus einer vorherigen Aufgabe und sollten so ├╝bernommen werden.

    Ernsthaft? Nicht zumindest irgendwie als Konstante?

    ├ťberleg mal, wie du die Mittelwerte von anderen Zahlen berechen wollen w├╝rdest. Du musst immer Code in allen 3 Funktionen ├Ąndern. Schreibe Code immer ohne unn├╝tze Wiederholungen und auch OHNE magische Zahlen!



  • Ja...mir war auch durchaus bewusst, dass mit den Programmen nur mit unn├Âtig viel Aufwand andere Werte berechnet werden k├Ânnen. Habe mir dann aber dar├╝ber keine genaueren Gedanken gemacht, da es wie gesagt nicht variabel sein musste/sollte.


  • Mod

    @jand61 sagte in Funktionen Mittelwerte berechnen:

    Ja...mir war auch durchaus bewusst, dass mit den Programmen nur mit unn├Âtig viel Aufwand andere Werte berechnet werden k├Ânnen. Habe mir dann aber dar├╝ber keine genaueren Gedanken gemacht, da es wie gesagt nicht variabel sein musste/sollte.

    Wo w├Ąre denn dann der Sinn, das als Programmier├╝bung zu machen? Den Durchschnitt der vorgegebenen Werte k├Ânntest du auch mit einem Taschenrechner berechnen:

    double harmonischerMW()
    {
        return 23.8376;
    }
    

    Toll! Und ganz viel ├╝ber Programmierung gelernt.


Log in to reply