Division bei Taschenrechnerprogrammierung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von MaXxer15, 5. März 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. März 2006
    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 ??? Hilfe wird mit nem 10'er belohnt.

    //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

    Code:
    #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;
    }
     
  2. 5. März 2006
    HI

    hab ma dein proggy umgeschrieben, jetzt funktionierts mit dem teilen.

    Hab als erstes alle Variablen (außer zahl) als float Deklariert, da wenn du 2 int's teilst, wird wieder ein int rauskommen => 5/2 = 2 (mit float dann natürlich 2,5)

    und beim einlesen deiner Zahlen mochte er dass %lf nicht, ich weiß auch nich genau, wie der Ausdruck für größere datentypen als float ist, aber %f reicht für float (und geht auch)

    habe aber nur die die Division verändert, du wenn bei den anderen rechenoperationen auch mit %f einließst, kannst du auch kommazahlen multiplizieren etc.
    worauf du hierbei achten musst, ist einfach als "Komma" einen "." zu schreiben

    MFG

    Hamml

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    int main()
    {
    int zahl;
    float a, b, gleich;
    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 ("%f", &a);
     printf ("Zahl 2: ");
     scanf ("%f", &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;
    }
    
     
  3. 5. März 2006
    Du müstest auch noch die Division durch Null abfangen.

    In etwa if b <> 0 then...

    Wäre einfach eine saubere Lösung.
     
  4. 5. März 2006
    stimmt, hab ich vorhin gar nicht dran gedacht
     
  5. 7. März 2006
    Danke danke hab ich direkt mal gemacht
    Nun ist mein 1. Programm in C programmiert und der Thread somit geclosed

    Mfg: MaXxer16

    P.S.: Habt natürlich beide nen 10'er bekommen
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.