Hilfe bei Taschenrechner in C gebraucht

hallo?

Grünschnabel
Hi ich will einen einfachen Taschenrechner programmieren. Der Compiler gibt keine Fehlermeldung an und das Programm läuft auch durch. Am Ende kommt allerdings das falsche Ergebnis raus. Z.B sowas wie 5+7 = 0,3.
Wo liegt der Fehler? Cool wenn jemand helfen kann!

C:
#include <stdio.h>
#include <stdlib.h>
int main()
{   float zahl1;
    float zahl2;
    int rechenzeichen;
    float zahl3 = zahl1 + zahl2;
    float zahl4 = zahl1 - zahl2;
    float zahl5 = zahl1 * zahl2;
    float zahl6 = zahl1 / zahl2;

        printf("Taschenrechner: Version 1.0\n\n\n");
        printf("Geben Sie hier die erste Zahl ein: ");
        scanf("%f", &zahl1);
        printf("Sie können zwischen folgenden Operatoren wählen:\n");
        printf("1.) +\n");
        printf("2.) -\n");
        printf("3.) *\n");
        printf("4.) /\n");
        printf("Geben Sie hier 1, 2, 3, oder 4 für Ihre Wahlmöglichkeit ein: ");
        scanf("%d", &rechenzeichen);
        printf("Geben Sie hier die zweite Zahl ein: ");
        scanf("%f", &zahl2);
            switch (rechenzeichen)
                {
                    case 1: printf("Das Ergebnis ist %f", zahl3);
                    break;
                    case 2: printf("Das Ergebnis ist %f", zahl4);
                    break;
                    case 3: printf("Das Ergebnis ist %f", zahl5);
                    break;
                    case 4: printf("Das Ergebnis ist %f", zahl6);
                }
        return 0;
    }
 
Zuletzt bearbeitet von einem Moderator:

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

das Programm wird Zeile für Zeile durchgearbeitet, so wie du es definierst.
Da du die zahl3 - zahl6 bereits vor der Eingabe von zahl1 und zahl2 berechnest stehen da halt irgendwelche Daten drinnen.
Ziehe entweder die zahl3 - zahl6 runter nach der Eingabe oder berechne das Ergebnis erst innerhalb deines switch (so machst du aus deinen 4 Variablen einfach eine).

Grüsse,
BK
 

hallo?

Grünschnabel
Super, danke Bratkartoffel! Jetzt klappts
Ich kann bei den Cases nur zahlen benutzen also case +: .... funktioniert z.B nicht.Gibt es eine Möglichkeit das anders zu gestalten,damit man nicht diese umständlichen Wahlmöglichkeiten von 1 bis 4 hat sonders der User selbst der Operator eingibt? Kann ich die If-Verzweigung so weit verschachteln? .