Switch Case + Variable übernehmen ?



  • Hi,
    wir sollen gerade an der UNI im Rahmen eines Projektes eine Schaltung für eine Ampel schreiben.
    Jetzt müssen wir uns dafür C selbst beibringen und es klappt soweit auch ganz gut.
    Allerdings habe ich gerade ein kleines Problem. 😞
    In folgender switch funktion, soll für die 3 Möglichkeiten also k,m & b das "a" immer neu definiert werden um es danach in die folgende Rechnung einzubinden.
    Allerdings will das ganze nicht so wie es soll und ich erhalte für alle 3 Auswahlmöglichkeiten immer das selbe Ergebnis.
    Wäre sehr dankbar wenn mich da jemand auf den Richtigen Weg bringen könnte.

    Mfg Sven

    void gruenewelle()
    {
    	switch (toupper(ft))
    {
    		case 'K': a = 2; break;
    		case 'M': a = 3; break;
    		case 'B': a = 6; break;
    		default : printf ("Ungueltige Eingabe");
    }
    printf ("\nDer Wagen braucht %.3lf Sekunden für die gesamte Strecke.",((summe-2*(((50/3.6)*(50/3.6))/(2*a)))/(50/3.6))+((50/3.6)/a));
    }
    


  • Hallo,

    von welchem Typ ist dennn dein: "ft"?



  • Meine Empfehlung wäre, deine kilometerlange Berechnung mal aufzudröseln in
    Teilbereiche.



  • Guten Morgen,

    also ft ist vom typ "char" und das mit der Auswahl klappt auch alles ganz gut, nur das was mich stutzig macht ist das egal ob ich k, m oder b wähle das endergebnis ist immer das gleiche.
    Kopiere ich allerdings die Formel in jeden case für sich, dann erhalte ich auch 3 verschiedene Ergebnisse so wie es sein soll.

    Formel aufteilen kann ich ja später machen das hier ist gerade auch nur ne stationärer Fall wird alles noch erweitert.

    Mfg



  • Duke87 schrieb:

    Kopiere ich allerdings die Formel in jeden case für sich, dann erhalte ich auch 3 verschiedene Ergebnisse so wie es sein soll.

    Also ich nicht.

    Egal, was ich für Summe einsetze, erhalte ich trotzdem 3 mal das gleiche Ergebnis.

    double summe = 134.;
    
         //9.648
         printf ("\nDer Wagen braucht %.3lf Sekunden für die gesamte Strecke.",((summe-2*(((50/3.6)*(50/3.6))/(2*2)))/(50/3.6))+((50/3.6)/2));
         //9.648
         printf ("\nDer Wagen braucht %.3lf Sekunden für die gesamte Strecke.",((summe-2*(((50/3.6)*(50/3.6))/(2*3)))/(50/3.6))+((50/3.6)/3));
         //9.648
         printf ("\nDer Wagen braucht %.3lf Sekunden für die gesamte Strecke.",((summe-2*(((50/3.6)*(50/3.6))/(2*6)))/(50/3.6))+((50/3.6)/6));
    

    Eine Aufteilung der Formel sorgt nun einfach dafür, dass solche Leute wie ich es auch verstehen 😃


  • Mod

    Duke87 schrieb:

    Formel aufteilen kann ich ja später machen das hier ist gerade auch nur ne stationärer Fall wird alles noch erweitert.

    ⚠ Ignorier nicht die Tipps die dir gegeben werden! Vereinfache mal die Formel, dann dürfte dir etwas bezüglich der a-Abhängigkeit deiner Formel auffallen.

    Das switch funktioniert wunderbar so wie es soll, nur deine Formel ist (vermutlich) falsch.



  • Ok ich hab nun meinen Fehler entdeckt....beim niederschreiben der Formel habe ich ein a zuviel eingebaut.
    So das sich die beiden a's weggekürzt haben also war es egal was ich für a definiere 😞
    Ich entschuldige mich für die Verwirrung...

    Und der Tip mit dem Strukturieren der Formel hat mich dann in die richtige Bahn gebracht.

    Danke euch allen !


Log in to reply