Variablen mit veränderlichen Werten



  • Hallo Cpp Forum!

    Ich möchte folgende Funktion programmieren:
    Es soll beispielsweise herausgenfunden werden ob ein eingegebener Widerstandswert zur E12-Widerstandsreihe gehört.
    Ich hab mir dazu folgende Rechnung überlegt:

    if((Wert%(Reihe*Faktor))==0){
    printf("E12-Reihe");
    }
    

    Mit der enum-Deklaration wollte ich den Variablen "Reihe" und "Faktor" verschiedene Werte zuweisen, das hat aber nicht geklappt.
    Es soll diese Rechnung praktisch mit allen Werten der E12-Reihe durchgeführt werden und wenn das Ergebnis einmal 0 ist, ist die Bedingung erfüllt.

    Hat jemand eine Idee wie das geht?
    Ich freue mich auf Antworten! 😃

    Zum Verständnis: Die Variable Wert ist der eingegebene Widerstandswert!
    Die Rechnung Reihe*Faktor soll jeden Widerstand der E12-Reihe wiedergeben!(zb 1.2*10 = 120 Ohm)



  • Du kannst Arrays benutzen, denen du vorher die Werte zuweist.

    Das hat den Vorteil, dass du das in einer Schleife machen kannst.

    Oder nutze die Berechnung der E-Reihe

    double R= 47;
    double intpart;
    double Ei;
    int EReihe = 12;
    
    Ei = EReihe * modf(log10(R), &intpart);
    

    Ei sollte jetzt ein ganzzahliger Wert sein. Sollte, da die Sollwerte der Widerstände gerundet sind.

    Eigentlich ist es auch egal, wenn die Toleranz der Widerstände 10% beträgt.
    Dann passt jeder Widerstand in die E12 Reihe.



  • DirkB schrieb:

    Du kannst Arrays benutzen, denen du vorher die Werte zuweist.
    Das hat den Vorteil, dass du das in einer Schleife machen kannst.

    Sicher ein brauchbarer Ansatz.

    Die Formel verbunden mit dem Rundungsproblem sowie der Verwendung des Variablentyps double
    oder float ist nicht so sauber lösbar.

    DirkB schrieb:

    Eigentlich ist es auch egal, wenn die Toleranz der Widerstände 10% beträgt. Dann passt jeder Widerstand in die E12 Reihe.

    Bei den 10% handelt es sich um die Mindestgenauigkeit. Bei E12 wird aber auch mit z.B. 1% Toleranz gearbeitet.
    Wenn sich die Frage stellt ob dann ein Widerstand der E12 Reihe in Frage kommt, oder wie gross die Toleranz
    tatsächlich ist muss man den genormten Wert kennen und überprüfen.

    Pro Dekade gibt es bei der E12 Reihe ja zum Glück nur die 12 Werte.

    1,0 1,2 1,5 1,8 2,2 2,7 3,3 3,9 4,7 5,6 6,8 8,2


Log in to reply