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 nichttja, 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