problem bei einfachem rechenprogramm



  • tach,

    ich befasse mich erst seit kurzem mit c programmierung und wollt nun mal als erstes ein programm schreiben, mit dem man ganz einfach zwei zahlen je nach eingabe addiert, subtrahiert, mutlipliziert oder dividiert. aber irgendwie funtzt das nicht 😞

    #include <stdio.h>
    #include <math.h>
    
    /*Rechnen mit den Grundrechenarten*/
    
    int main(void)
    {
    int a, b, ergebnis;
    char z;
    
    printf ("\n\nGRUNDRECHENARTEN mit rationalen Zahlen\n======================================\n\n");
    printf ("Gebe eine Addition, Subtraktion, Multiplikation oder Division zweier rationaler Zahlen ein!\n");
    scanf ("%d %c %d", &a, &z, &b);
    
    if (z == '+')
    	ergebnis = a + b;
    else if (z == '-')
    	ergebnis = a - b;
    else if (z == '*')
    	ergebnis = a * b;
    else if (z == '/')
    	ergebnis = a / b;
    
    printf("Das Ergebnis lautet: %d.2", &ergebnis);
    }
    


  • printf("Das Ergebnis lautet: %d.2", &ergebnis);
    

    du gibst ja auch die Speicher Adresse von Ergebnis aus!

    lass das & bei ergebbnis weg!

    So ist der code richtig:

    printf("Das Ergebnis lautet: %d.2", ergebnis);
    

    mfg hohesC



  • Zwei Sachen noch:

    printf("Das Ergebnis lautet: %d.2", ergebnis);
    

    Was soll das .2 bewirken?

    Und mach das ganze lieber mit einem switch, das ist zwar nicht viel kürzer aber verständlicher und schneller.



  • Normal wird das so geschrieben %.2d das bewirkt, dass zwei nachkommastellen angezeigt werden!
    Und es wird bei fließkommazahlen wie float und double häufig verwendet!
    Es würde aber:

    printf("Das Ergebnis lautet: %d", ergebnis);

    völlig ausreichen!

    mfg hohesC



  • Mal abgesehen davon das ints keine Nachkommazeichen speichern 😉



  • Das ist mir schon klar ddeswegen hab ich ja gesagt das

    %d
    

    völlig ausreicht! Und das es häufig für float oder double verwendet wird.

    nochmal mit switch case:

    #include <stdio.h> 
    #include <math.h>
    #include <conio.h> 
    
    /*Rechnen mit den Grundrechenarten*/ 
    
    int main(void) 
    { 
    int a, b, ergebnis; 
    char z; 
    
    printf("\n\nGRUNDRECHENARTEN mit rationalen Zahlen\n======================================\n\n"); 
    printf("Gebe eine Addition, Subtraktion, Multiplikation oder Division zweier rationaler Zahlen ein!\n"); 
    scanf("%d %c %d", &a, &z, &b); 
    
    switch(z) 
    {
    	case '+':
    		ergebnis = a + b;
    		break;
    	case '-': 
    		ergebnis = a - b;
    		break;
    	case '*':
    		ergebnis = a * b;
    		break;
    	case '/': 
    		ergebnis = a / b;
    		break;
    	default : 
    		break;
    }
    
    printf("Das Ergebnis lautet: %d", ergebnis);
    getch(); 
    return(0);
    }
    

    mfg hohesC



  • Was passiert wohl, wenn ich 5 / 0 eingebe??

    PS: Auf diese Frage soll bitte nur der Threadersteller antworten!



  • wow...erstmal danke für die vielen Antworten!

    das mit dem

    %d.2
    

    sollte nur 2 Nachkommastellen bei der Anzeige bewirken, muss aber

    %.2d
    

    heißen, wie es hohesC schon schrieb.
    stimmt! eigentlich brauche ich das bei int gar nicht 🙄

    tja, wenn man 5/0 eingibt, streikt das Programm. Hier müsste ich noch eine if-Schleife einbauen.

    thx
    antelucem



  • antelucem schrieb:

    if-Schleife

    Prügelstrafe? 😉



  • Prügelstrafe? 🙂

    5 Tage kein Essen! 😃



  • if(z=='/'&&b==0)
    {
        printf("Division by Zero!");
    }
    else
    {
        //Hier dann den switch case oder if Teil.     
    }
    

    mfg hohesC


Anmelden zum Antworten