Problem in C
-
Hallo kann mir jemand dringend helfen??
Ich habe hier eine Aufgabe, die ich lösen soll.
Der Compiler zeigt mir immer einen Fehler für das 'y' an und ausserdem spring er nicht in die if/else Anweisung...#include <stdio.h> #include <conio.h> void main() { do { int zahl, zahl1, ergebnis; char x, y; printf("Geben Sie 2 Zahlen ein!\n\n"); printf("\nEingabe Zahl 1: "); scanf("%d", &zahl); printf("\nEingabe Zahl 2: "); scanf("%d", &zahl1); printf("\t\t****************************\n"); printf("\t\t* *\n"); printf("\t\t* MENUE *\n"); printf("\t\t* *\n"); printf("\t\t****************************\n"); printf("\t\t* *\n"); printf("\t\t* Die eingegbene Zahlen: *\n"); printf("\t\t* *\n"); printf("\t\t* a. addieren *\n"); printf("\t\t* *\n"); printf("\t\t* b. subtrahieren *\n"); printf("\t\t* *\n"); printf("\t\t* c. multiplizieren *\n"); printf("\t\t* *\n"); printf("\t\t* d. dividieren *\n"); printf("\t\t* *\n"); printf("\t\t****************************\n"); scanf("%s", &x); switch(x) { case 'a': ergebnis = zahl + zahl1; printf("\n\n"); printf("Ergebnis: %d", ergebnis); getch(); break; case 'b': ergebnis = zahl - zahl1; printf("\n\n"); printf("Ergebnis: %d", ergebnis); getch(); break; case 'c': ergebnis = zahl * zahl1; printf("\n\n"); printf("Ergebnis: %d", ergebnis); getch(); break; case 'd': ergebnis = zahl / zahl1; if( zahl1 == 0) { printf("Divisionen mit 0 sind nicht möglich!"); } else { printf("\n\n"); printf("Ergebnis: %d", ergebnis); getch(); } break; default: printf("\nFalsche Eingabe!\n"); getch(); break; } printf("\t\t*********************************************\n"); printf("\t\t* *\n"); printf("\t\t*Wollen Sie das Programm nochmals ausführen?*\n"); printf("\t\t* *\n"); printf("\t\t*********************************************\n"); printf("\t\t* *\n"); printf("\t\t* J/j = ja *\n"); printf("\t\t* *\n"); printf("\t\t* N/n = nein *\n"); printf("\t\t* *\n"); printf("\t\t*********************************************\n"); scanf("%c", &y); }while ( y == 'n'); }
-
Was kommt denn für ein Fehler?
Bei scanf("%s", &x); sollte es %c sein, wie bei y auch.
Ausserdem wäre es sinniger, die Abfrage ob zahl1 == 0, VOR der Devision zu machen.
Sonst ist es ja schon zu spät.
-
Hallo me,
dein Problem läßt sich auf folgendes kürzen
int main() { do { int x = 1; } while(x != 1); return 0; }
Das wird niemals kompilieren, da x gar nicht mehr im while existiert. In C können Variablen immer nur zu Anfang eines Blockes deklariert werden, und werden am Ende des Blockes "unsichtbar" -> Stichwort Scope. Um das Programm zu korrigieren mußt du einfach die Variablen vor dem do {...} deklarieren.
Außerdem solltest du int main() {} verwenden. Nur eine main Funktion mit Rückgabewert int ist standardkonform und wird überall kompilieren.Gruß Tobias
-
danke tobi,
ärgerlich immer diese blöden denkfehler und schon haut alles nicht hin *g*
genau das int war falsch...dankeschön
sg me