Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » switch und einlesen von kommandos

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.11.2003, 15:28 Uhr
~Maya
Gast


Hi,
ich bin absoluter Anfänger in C-Programmierung und finde meinen fehler ind diesem kleinen Programm nicht. Egal welches Kommado ich eingebe, geht er in den default-Zwei und gibt die Fehler-Nachrich "Falsche Kommando" aus. Auch mita dem Tipp, den ich bekommen hab, dass ich gegen es mit dem Ascii-Code(für 1 wäre es 0x31) versuchen soll, funktionierte es nicht.

hier der Code:

C++:
#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\n", &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;
}


Danke


Bearbeitung von loddab:
cpp-Tags gesetzt

Dieser Post wurde am 28.11.2003 um 15:32 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.11.2003, 15:36 Uhr
typecast
aka loddab
(Operator)


Erstens: Das \n im ersten scanf muss weg.
Zweitens: In der Switch-Anweisung musst du auf Zahlen testen und nicht auf Buchstaben. Mach aus '1' einfach 1, aus '2' einfach 2...
Dann funktioniert das Programm
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.11.2003, 15:39 Uhr
ao

(Operator)



Zitat:
~Maya postete

C++:
    case '1' :





C++:
    case 1: /* ohne Hochkomma! */



Erklärung: So wie du oben scanf benutzt, wird ein numerischer Wert (z.B. 1) eingelesen. Im switch testest du aber auf das Zeichen '1', und das ist nicht dasselbe.

Übrigens fehlt zwischen case 4 und default das break, das wird dazu führen, dass das Programm bei Eingabe von 4 zuerst die Statements für case 4 ausführt und dann durchrauscht zu default.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.11.2003, 15:44 Uhr
Pablo
Supertux
(Operator)


Damiit case '1' funktionierrt muss der Anwender 49 angeben, denn '1' ist ascii 49, und '1' als ein char engesene wird.

mach einfach:

C++:
swith(c) {
case 1:
//code
break;
case 2:
// code
break;
// usw
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.11.2003, 15:58 Uhr
virtual
Sexiest Bit alive
(Operator)


Eine Alternative ist

C++:
scanf("%[b]c[/b]\n", &c);


zu verwenden, dann kannst Du den Rest unverändert lassen. Ansonsten mußt Du eben -wie erwähnt - die case labels anpassen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.11.2003, 15:59 Uhr
typecast
aka loddab
(Operator)


Wiso \n?
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.11.2003, 16:13 Uhr
virtual
Sexiest Bit alive
(Operator)


Oh sorry, das ist mir so reingerutscht...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.11.2003, 13:47 Uhr
~Maya
Gast


Ich danke allen, die sich hier bemüht haben. Ich habe eure Tipps befolgt und jetzt funktioniert es auch problemlos.

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: