Laden...

arithmetisches Mittel

Erstellt von v.wochnik vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.605 Views
V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren
arithmetisches Mittel

Hallo Leute!

Ich habe zwei Variablen:


int value1;
int value2;

Diese Weerte sind unterschiedlich.

Nun suche ich eine Funktion, die diese in den Gleichstand bringt:

wert1: 3
wert2: 5

neuer wert: 4, denn 3 + 1 = 5 - 1.

Gibt es sowas, oder stehe ich einfach auf dem Schlauch?

998 Beiträge seit 2007
vor 16 Jahren

public int todesFunktion(int zahl1, int zahl2)
{
  return (zahl1 + zahl2)/2;
}

oder steh ich auf dem Schlauch? 😁

V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren

Oh nein 😁

C
8 Beiträge seit 2007
vor 16 Jahren

Auch bekannt als arithmetisches Mittel oder Durchschnitt 😉

(x1+x2+x3.......+xn)/n

998 Beiträge seit 2007
vor 16 Jahren

das ist das gute an Funktionen, er braucht net wissen wies gemacht wird...

Falls du mehr Parameter hast hätt ich noch die Variante hier 😁


private int todesFunktion(params int[] values)
        {
            int summe = 0;
            foreach (int zahl in values)
            {
                summe += zahl;
            }
            return (summe / values.Length);
        }

Gelöschter Account
vor 16 Jahren

hi

ich will ja nicht unfreundlich sein, aber über ein gewisses mathematisches grundwissen solte man schon verfügen........

MfG janismac

M
231 Beiträge seit 2007
vor 16 Jahren

Scheiße ist nur, dass ihr int Werte zurück gebt. Was passiert z.B. bei 4 und 5???

Gruß MB


Gruß MB

Home of DigiJay - DJ-Freeware

871 Beiträge seit 2005
vor 16 Jahren

... double oder float verwenden?

Grüsse,
Egon

998 Beiträge seit 2007
vor 16 Jahren

Original von muntablues
Scheiße ist nur, dass ihr int Werte zurück gebt. Was passiert z.B. bei 4 und 5???

Gruß MB

immer in xP denken... Es war keine Floatzahl vom Kunden gefordert, nur eine Intzahl, also wird auch kein float implementiert 🙂

5.742 Beiträge seit 2007
vor 16 Jahren

Zumindest sollte dann aber korrekt gerundet werden.

998 Beiträge seit 2007
vor 16 Jahren

nochmal: es wurde nicht verlangt, also wird es auch nicht implementiert... 🙂
den Rückgabewert in double zu ändern und Divident oder Divisor auf double zu casten traue ich jedem noch zu 🙂

Extra für dich:


private int todesFunktionDieAuchNochRundet(params int[] values)
{
   double summe = 0;
   foreach (int zahl in values)
   {
       summe += zahl;
   }
   summe /= values.length;
   return summe+0.5;
}

G
52 Beiträge seit 2007
vor 16 Jahren

Das stimmt so aber nicht 😉


        private double arithMittel(int[] values)
        {
            double summe = 0;
            foreach (int zahl in values)
            {
                summe += zahl; //Werte des Array addieren
            }
            summe /= values.Length; //Ergebnis durch Anzahl der Werte dividieren
            return Math.Round(summe, 2); //Ergebnis auf 2 Nachkommastellen runden und zurückgeben
    }

MfG,
Grouser.

998 Beiträge seit 2007
vor 16 Jahren

Es ging um auf- oder abrunden und das hat meine Funktion zweifelsohne getan, wo soll der fehler sein?
Von der rundung auf 2 Nachkommastellen hat ja nicht mal winSharp geredet... 😁

G
52 Beiträge seit 2007
vor 16 Jahren

Original von DavidT
Es ging um auf- oder abrunden und das hat meine Funktion zweifelsohne getan[...]:D

Deine Funktion hat in dem Sinne nicht gerundet. Sie hat zwar alle Werte in einer Double-Variable addiert, sie danach korrekt dividiert, doch dann versucht, dieses Ergebnis mit 0.5 zu addieren und als int-Wert zurückzugeben.
Dies ergibt jedoch keinen Sinn, es sei denn, du wolltest das Ergebnis absichtlich verfälschen.

Original von DavidT
Von der rundung auf 2 Nachkommastellen hat ja nicht mal winSharp geredet...

Es macht doch aber Sinn, Zahlen so zu runden, möchte man einen Mittelwert erlangen, oder liege ich da falsch?

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Grouser,

der Code von DavidT ist doch ok. Es wird der Mittelwert gerundet auf 0 Nachkommastellen zurückgegeben. Warum sollte das ein prinzipieller Unterschied zum Runden auf 2 Nachkommastellen sein?

Wenn einem der Mittelwert als int reicht, ist das doch ok.

herbivore

G
52 Beiträge seit 2007
vor 16 Jahren

Original von herbivore
[...]der Code von DavidT ist doch ok. Es wird der Mittelwert gerundet auf 0 Nachkommastellen zurückgegeben. Warum sollte das ein prinzipieller Unterschied zum Runden auf 2 Nachkommastellen sein?[...]
herbivore

Hallo nochmal, das lässt mir gerade keine Ruhe:
Entweder ich bin grad vollkommen auf dem Holzweg (dann entschuldigt dies bitte), oder ich sehe Fehler im Code von DavidT:

Kommentierter Code von DavidT durch Grouser:


private int todesFunktionDieAuchNochRundet(params int[] values)
{
   double summe = 0;
   foreach (int zahl in values)
   {
       summe += zahl;
   }
   summe /= values.length;
   return summe+0.5; 
//Fehler	1: Der Typ "double" kann nicht implizit in "int" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.)
//Fehler 2: Ein Ergebnis von beispielsweise "4,3" müsste auf "4,0" gerundet werden, die Rückgabe wäre jedoch "5", da ja "4,8" gerundet wird (summe+0.5)

}

Abgesehen davon sind die Unterschiede der Codes recht simpel und ich glaube nicht, dass es lohnt, darüber nun ewig zu debattieren, da jeder, der einen solchen Code benötigt ihn sehr schnell auf seine Bedürfnisse abstimmen können wird.

MfG,
Grouser

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Grouser,

Fehler 1: Ja der Cast fehlt, aber hier ging es ja um Code, der direkt im Forum eingetippt wurde. Da sollte man drüber hinweg sehen. Es ging ja ums Prinzip.

Fehler 2: Dann caste mal 4.8 auf int. 🙂 Ergebnis 4.
Also das + 0.5 ist extra dafür, damit das Ergebnis korrekt gerundet ist.

herbivore

G
52 Beiträge seit 2007
vor 16 Jahren

Original von herbivore
Fehler 2: Dann caste mal 4.8 auf int. 🙂 Ergebnis 4.
Also das + 0.5 ist extra dafür, damit das Ergebnis korrekt gerundet ist.

Jetzt erkenne ich meinen gedanklichen Fehler:
Ich war davon ausgegangen, dass das Ergebnis konvertiert und nicht auf int gecastet wird (aus dem Code war es ja nicht zu entnehmen 😉 )

Mit dem Cast auf int macht der Code sehr wohl Sinn, was ich nun auch erkenne, mir aber bei der Betrachtung des Codes nicht in den Sinn gekommen ist (verdammt sei lineares Denken).

MfG,
Grouser.

M
231 Beiträge seit 2007
vor 16 Jahren

He Leute

oje was geht denn hier ab???

Gruß MB


Gruß MB

Home of DigiJay - DJ-Freeware

998 Beiträge seit 2007
vor 16 Jahren

Naja gut, der finale Cast ist mir entgangen, aber wie herbivore schon sagte ist das im Forum getippter Code 🙂
Davon ab, die Grundaufgabenstellung war es, bei z.B. 3 und 5 eine 4 rauszubekommen, keine 4,00 was es bei dir geworden wär g