Ich brauch schnell Hilfe!

anschlechter

Grünschnabel
Hallo allerseits, ich muss ein Programm schreiben namens "Median" mittels Templates!!

Templates:Median

a) Schreiben Sie eine Templatefunktion

template<typenameT>
T median_aus_3(T x, T y, T z);

die durch geeignetes Vergleichenden Median der drei Werte von x, y, z als Ergebnis liefert.
Testen Sie ihre Funktion in einer main-Funktion.Geben Sie hier jeweils den Median
dreier int-, float-, und double-Werte aus.

b) Sie wollen die Funktion für einen int-Parameter i1, einen float-Parameter f1 und
einen double-Parameter d1 anwenden und rufen in Ihrem Programm median aus 3(i, f, d)
auf. Was passiert? Erklären Sie!

Ich danke für die hilfe
 
a) Der Median ist der Wert in der Mitte der Stichprobe, in diesm Fall also y:
Code:
template<typename T> T median_aus_3(T x, T y, T z)
{
  return y;
}

int main(int argc, char* argv[])
{
    int i1 = 3, i2 = 5, i3 = 9;
    float f1 = float(5.7), f2 = float(8.2), f3 = float(15.6);
    double d1 = double(8.3), d2 = double(15.4), d3 = double(26.8);

    double dResult;
    float fResult;
    int iResult;
    
    iResult = median_aus_3(i1, i2, i3);
    fResult = median_aus_3(f1, f2, f3);
    dResult = median_aus_3(d1, d2, d3);

    return 0;
}
b) Es gibt einen Compilerfehler (hier mit Visual C++ 6):
Code:
dResult = median_aus_3(i1, f1, d1);
->error C2782: 'T __cdecl median_aus_3(T,T,T)' : Vorlagenparameter 'T' ist mehrdeutig
koennte 'float' sein
oder 'int'

c) das nächste Mal: erst selber denken und ausprobieren!
 
"If I did your homework for you, then you might pass your class without learning how to write a program like this. Then you might graduate and get your degree without learning how to write a program like this. You might become a professional programmer without knowing how to write a program like this. Someday you might work on a project with me without knowing how to write a program like this. Then I would have to do you serious bodily harm."
 
Aber auch nur, wenn x <= y <= z oder z <= y <= x, oder täusch ich mich da?
Das stimmt allerdings, Du täuschst Dich nicht! Das gilt nur für eine geordnete Stichprobe.

Wikipedia:
Der Median X einer geordneten Stichprobe (x1, x2, x3,...,xn) von n Messwerten berechnet sich als
X = x((n+1)/2) | n ungerade
bzw.
X = (1/2)*(x(n/2) + x((n/2) + 1)) | n gerade
anschlechter sollte vielleicht noch einen Sortieralgorithmus einbauen.
 
Zurück