1 aus drei
-
Hallo,
ich habe eine Funktion die drei Winkelwerte einliest un die Ergebnisse in einer struct speichert.
struct Winkel { double Vorschub; double Trommel; double Kugel; };
Es tritt aber das Problem auf, dass die Werte manchmal falsch eingelesen werden. ich möchte daher eine Funktion haben die drei mal hintereinander die Winke einliest und vergleicht.
Ich muss folglich 3 mal 3 Werte vergleichen (Die drei Vorschubwerte miteinander, die drei Trommelwerte miteinander und die Kugelwerte miteinander).Wie stelle ich das am dümmsten an ohne mich einer if-Anweisung zu verlieren.
So sollte es nicht aussehen:
if(Wtemp[0].Vorschub == Wtemp[1].Vorschub) { // Die ersten beiden sind gleich if(Wtemp[1].Vorschub == Wtemp[2].Vorschub) { //Alle Werte gleich W.Vorschub = Wtemp[2].Vorschub; } else{ W.Vorschub = Wtemp[1].Vorschub; }//if(Wtemp[1].Vorschub == Wtemp[2].Vorschub) } else{ if(Wtemp[0].Vorschub == Wtemp[2].Vorschub) { //Der erste und letzte Wert ist gleich W.Vorschub = Wtemp[2].Vorschub; } else{ //Alle sind unterschiedlich W.Vorschub = Wtemp[2]; } }//if(Wtemp[0].Vorschub == Wtemp[1].Vorschub)
Ich bin auch schon dankbar, wenn ich "nur" Tipps für die Vorgehensweise bekomme. In Code umsetzen kann ich das dann alleine.
Danke
-
machs doch mit 'ner funktion:
double one_out_of_three (double a, double b, double c) { if (a == b || a == c) return a; if (b == c) return b; return 0.0; // nix passt }
-
kT
-
Damit Du nicht völlig ins Nirvana läufst: Wenn Du Messdaten hast, werden diese in der Regel *nie* in allen Nachkommastellen gleich sein, oder? Und jetzt überlege mal, bei wie vielen Versuchen dieses Programm einen
ausgibt:
double a = messdatenEinlesen(); double b = neueMessdatenEinlesen(); if(a == b) { printf(":-)"); }