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(":-)");
    }
    

Anmelden zum Antworten