Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

switch und einlesen von kommandos

Hi,
ich bin absoluter Anfänger in C und finde leider meinen Fehler in diesem kleinen Taschenrechner nicht!  ???

Hier ist der Code:

#include<stdio.h>

int main()
{
   int a;
   int b;
   int c;
   printf("Sie befinden sich im Haupmenue\n\n Bitte geben Sie ihre Wahl an:\n 1. Addieren\n 2. Subtrahieren \n 3. Multiplizieren \n 4. Dividieren\n");
   scanf("%d", &c);
   switch(c)
   {
   case '1' :
   printf("Geben Sie ihre erste Zahl ein:");
   scanf("%d", &a);
   printf("Geben Sie ihre zweite Zahl ein:");
   scanf("%d", &b);
   printf("Das Ergebnis ist:%d\n", a + b);
   break;
   case '2':
   printf("Geben Sie ihre erste Zahl ein:");
   scanf("%d", &a);
   printf("Geben Sie ihre zweite Zahl ein:");
   scanf("%d", &b);
   printf("Das Ergebnis ist:%d\n", a - b);
   break;
   case '3':
   printf("Geben Sie ihre erste Zahl ein:");
   scanf("%d", &a);
   printf("Geben Sie ihre zweite Zahl ein:");
   scanf("%d", &b);
   printf("Das Ergebnis ist:%d\n", a * b);
   break;
   case '4':
   printf("Geben Sie ihre erste Zahl ein:");
   scanf("%d", &a);
   printf("Geben Sie ihre zweite Zahl ein:");
   scanf("%d", &b);
   printf("Das Ergebnis ist:%d\n", a / b);   
   default :
   printf("Falsches Kommando!\n");
   }
   return 0;
}


Antworten zu switch und einlesen von kommandos:

was ist denn genau der fehler??

was funktioniert denn nicht??

Schuss ins Blaue ... da fehlen \n am ende der scanf's ?

Ganz einfach, wenn ich ein Kommando eingebe(egal welches) kommt immer die Fehlermeldung "Falsches Kommando". Wenn ich scanf noch eine Esacpe-Sequenz hinzufüge wie \n dann bleibt das Programm hängen und wenn ich den default-teil herauslasse, beendet sich das Programm von selbst.

Danke für die schnellen Antworten

Hm vielleicht hätt ich nochmal genauer gucken sollen:

Du hast c als int (was auch richtig ist).

Dann überprüfst du jedoch, ob c == '1', '2', etc ist.
Aber c ist kein Character, sondern ein integer, und der ascii-code von '1' ist nicht 1, somit rennt er in den default-Zweig. Also, check gegen echte Zahlen, und nicht gegen Buchstaben.

Sorry, wenn ich dich falsch verstanden hab, aber nach http://www.asciitable.com/ funktioniert weder der Hexcode 0x31 bzw 31 noch der dezimalcode 49: das programm friert ein.

Danke

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

sorry bin schon ein paar Jahre weg von C und weiß
die Syntax nicht mehr genau, aber könnte es nicht
sein das es

case 1:
case 2:
case 3:
case 4:

heißen muß.

Sorry wenn ich falsch liege.

Vielleicht hilft das!

int main (void)
{
   int a=0;
   int b;
   int c;


   printf ("Was wollen Sie tun? \n"
      "1: addieren? \n"
      "2: subtrahieren? \n"
      "3: multiplizieren? \n"
      "4: dividieren? \n"
      "5: Ende \n");
   
   do
   {
   fflush (stdin);
   scanf ("%d", &a);

   switch (a)
   {
   case 1:
   printf ("Zwei Zahlen eingeben! \n");
   scanf ("%d%d",&b,&c);
   printf ("Ergebnis = %d \n", b+c);
   break;
   case 2:
   printf ("Zwei Zahlen eingeben! \n");
   scanf ("%d%d",&b,&c);
   printf ("Ergebnis = %d \n", b-c);
   break;
   case 3:
   printf ("Zwei Zahlen eingeben! \n");
   scanf ("%d%d",&b,&c);
   printf ("Ergebnis = %d \n", b*c);
   break;
   case 4:
   printf ("Zwei Zahlen eingeben! \n");
   scanf ("%d%d",&b,&c);
   printf ("Ergebnis = %f \n",(float) b/c);
   break;
   case 5:
   break;
                  
   default:
   printf ("Falsche Eingabe!");
}
   }while (a!=5);

   return 0;
}


« Programme verknüpfenumfangreiche Formulardaten speichern »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Ein Unicode ist ein "Einheitsschlüssel", der als internationaler Standard gilt. Unicode ist ein digitaler Zeichensatz zur Darstellung von weitestgehend jedem Schrift...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...