Von Dezimal nach Gleitkommazahl (Probleme aufgetreten)



  • Und zwar wenn ich bei dem Programm *4* eingebe und *Enter* drücke komme ich zwar zur Division (Case 4) aber nachdem ich die 2 Zahlen eingegeben habe, stürzt mein Rechner ab...
    Was hab ich falsch gemacht ??? Vielen Dank schonmal für die Hilfe.

    //edit: klar ist mir schon, das wenn ich %lf und %f duch %d ersetze, das das dann funzt. Ich möchte aber auch Kommazahlen als Ergebnis haben und wenn es geht auch eingeben können...

    Mfg: MaXxer16

    #include <stdio.h>
    #include <conio.h>
    
    int main()
    {
    int a, b, gleich, zahl;
    printf ("Welche Rechenart bevorzugen sie ?\n\n1=Addition\n2=Subtraktion\n3=Multiplikation\n4=Division(mit 2 Nachkommastellen)\nEingabe: ");
    scanf ("%d",&zahl);
    switch (zahl)
    {
    case 1: printf ("\nAddition\n\n");
               printf ("Bitte die 2 Zahlen zur Addition eingeben\n");
               printf ("Zahl 1: ");
               fflush(stdin);
               scanf ("%d", &a);
               printf ("Zahl 2: ");
               scanf ("%d", &b);
               gleich = a+b;
               printf ("\n\nErgebnis: %d + %d = %d", a, b, gleich);
               break;
    case 2: printf ("\nSubtraktion\n\n");
               printf ("Bitte die 2 Zahlen zur Subtraktion eingeben\n");
               printf ("Zahl 1: ");
               fflush(stdin);
               scanf ("%d", &a);
               printf ("Zahl 2: ");
               scanf ("%d", &b);
               gleich = a-b;
               printf ("\n\nErgebnis: %d + %d = %d", a, b, gleich);
               break;
    case 3: printf ("\nMultiplikation\n\n");
               printf ("Bitte die 2 Zahlen zur Multiplikation eingeben\n");
               printf ("Zahl 1: ");
               fflush(stdin);
               scanf ("%d", &a);
               printf ("Zahl 2: ");
               scanf ("%d", &b);
               gleich = a*b;
               printf ("\n\nErgebnis: %d * %d = %d", a, b, gleich); 
               break;
    case 4: printf ("\nDivision\n\n");
               printf ("Bitte die 2 Zahlen zur Division eingeben\n");
               printf ("Zahl 1: ");
               fflush(stdin);
               scanf ("%lf", &a);
               printf ("Zahl 2: ");
               scanf ("%lf", &b);
               gleich = a/b;
               printf ("\n\nErgebnis: %f : %f = %f", a, b, gleich);
               break;
    default: printf ("\n\n\nError:\nSie haben die Zahl %d eingegeben.\nDiese Zahl entspricht nicht den Vorgaben.\nStarten die das Programm nun bitte erneut.", zahl);
    }
    printf ("\n\n\n\n\n\n\n\n\n\nBitte nun eine beliebige Zahl zum beenden drücken                                                                                   //Copyright 2006 by MaXxer16");
    getch();
    return 0;
    }
    


  • MaXxer16 schrieb:

    //edit: klar ist mir schon, das wenn ich %lf und %f duch %d ersetze, das das dann funzt. Ich möchte aber auch Kommazahlen als Ergebnis haben und wenn es geht auch eingeben können...

    Dann solltest du die Variablen a und b auch vom Typ float oder double deklarieren.

    Btw: Deine Frage hast du im falschen Forum gestellt ;). (Gehört nach ANSI C).

    Gruß Caipi



  • Und nächstens im richtigen Forum posten (Stichwort Ansi-C).



  • THX 4 Help oh man ich dusi...
    Ich hab mich gerad durch nen paar Tuts gearbeitet und wollte einen Taschenrechner programmieren (und dies hier war mein 1. Post 😉 )

    Mfg: MaXxer16


Anmelden zum Antworten