Einfacher taschenrechner
-
printf("Sie haben %f %c %f eingegeben\n", x, r, y); // die Variable heißt r
-
Canfaenger schrieb:
Klappt nur leider nicht...:(
Schreibe doch bitte gleich Fehlermeldung/-beschreibung dazu. Sonst muss man unnötig viel Code lesen.
EDIT: Und scanf hat übrigens auch einen Rückgabewert, siehe Doku.
-
Die scanf-Doku wär überhaupt guter Lesestoff. Man könnte hier den [-Spezifikator wunderbar für sich einspannen:
#include <stdio.h> int main(void) { double x, y; char op; if(3 == scanf("%lf %[+-*/] %lf", &x, &op, &y)) { switch(op) { case '+': printf("%g\n", x + y); break; case '-': printf("%g\n", x - y); break; case '*': printf("%g\n", x * y); break; case '/': printf("%g\n", x / y); break; } } else { fputs("Fehler beim Einlesen\n", stderr); return -1; } return 0; }
-
Nicht ganz.
Der [-Spezifikator erwartet einen Zeiger auf ein char-Array, groß genug für alle Zeichen plus der abschließenden '\0'.... char op[2]; if(3 == scanf("%lf %1[+-*/] %lf", &x, &op, &y)) { switch(op[0]) { ....
-
Hey jungs,
ich bin sehr dankbar für eure hilfe, leider klappts wirklich nicht so wie ich mir das vorstelle.
Mir wird gesagt, dass meine variable r nicht initalisiert ist/wird? Dabei mache ich das doch. Habe ich vielleicht den falschen datentyp gewählt. Meine vorhaben ist, die in die variable r den eingegeben rechenoperator abzulegen und dann in der if funktion zu überprüfen welcher gewählt wurde.
-
Nein, du tust es nicht. Du deklarierst r hier:
char r;
Reine Deklaration, ohne Initialisierung mit einem Wert. Dann verwendest du
r
, und zwar leider falsch:scanf("%c", r);
scanf
möchte gerne den gelesenen Wert in einer Variablen speichern. Also musst du ihm zeigen, wo er speichern soll. Das machst du, indem du ihm die Adresse vonr
übergibst (&r
), nichtr
selbst.
-
Oh man was für ein dummer flüchtigkeitsfehler : ( danke dir.
Jetzt hab ichs geändert und nun überspringt er einfach dieses "scanf" für die Rechenart und gibt mir direkt aus, das die rechenart nicht bekannt ist, ohne das ich etwas eingebe.
-
CAnfaenger schrieb:
Oh man was für ein dummer flüchtigkeitsfehler : ( danke dir.
Jetzt hab ichs geändert und nun überspringt er einfach dieses "scanf" für die Rechenart und gibt mir direkt aus, das die rechenart nicht bekannt ist, ohne das ich etwas eingebe.
Eingabepuffer leeren (diese beiden Wörter kannst du direkt in die Forensuche eingeben
)!
-
_matze schrieb:
Eingabepuffer leeren (diese beiden Wörter kannst du direkt in die Forensuche eingeben
)!
Wenn er nach "Eingabepuffer löschen" sucht findet er gleich diesen Thread, da ich ihn schon zweimal darauf hingewiesen habe.
-
DirkB schrieb:
_matze schrieb:
Eingabepuffer leeren (diese beiden Wörter kannst du direkt in die Forensuche eingeben
)!
Wenn er nach "Eingabepuffer löschen" sucht findet er gleich diesen Thread, da ich ihn schon zweimal darauf hingewiesen habe.