Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » switch problem...

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 < [ 2 ] [ 3 ]
000
03.11.2007, 15:17 Uhr
wolf360




C++:
#include <stdio.h>
int main(void){
    char t;
    do{
       printf("e für Abbrechen drücken\n");
       printf("Bitte geben Sie ein Zahl ein ");  
       scanf("%c",&t);
       fflush(stdin);
       switch(t){
       case 'a': printf("Sie haben %c eingegeben\n",t);
       break;    
       case 1: printf("Sie haben %c eingegeben\n",t);
       break;    
       case 3: printf("Sie haben %c eingegeben\n",t);
       break;    
       case 4: printf("Sie haben %c eingegeben\n",t);
       break;    
       default: printf("Irgendwas stimmt nicht\n",t);
       }
    }
    while(t != 'e');
      return 0;
    }



Folgendes Problem, wenn ich 2,3,4 eingebe, kommt trotzdem die Ausgabe von default aber warum??

%c kann doch für Zahlen und Buchstaben stehen oder nicht? Wenn ich a eingebe funktioniert alles nur bei den Zahlen spinnt es?

gruß wolf360

Dieser Post wurde am 03.11.2007 um 15:17 Uhr von wolf360 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.11.2007, 15:42 Uhr
öni



Da du ja Char benutz musst du auch sagen wenn ein Zeichen kommen soll und wann nicht....

Also bei a schreibst du 'a'
Und bei 1 schreibst du 1
Wobei es mit Hochkomma versehen werden sollte
Also bei 1 '1'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.11.2007, 16:31 Uhr
wolf360



okey danke hat geklappt, dazu auch ne andere frage:

bei der do und while schleife muss man nach dem while ja ein semikolon machn, und danach die Anweisungen angeben. Wie in meinem Beispiel halt return 0;

ABer wie ich dann noch was anderes machn, das unabhängig von der do/while schleife läuft?

z.B Noch irgendeinen printf-Befehl oder so?

hoff jetzt mal ich habe mich verständlich ausgedrück...!

gruß wolf360
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.11.2007, 16:49 Uhr
öni



[quote wolf360]
C++:
#include <stdio.h>
int main(void){
    char t;
    do{
       printf("e für Abbrechen drücken\n");
       printf("Bitte geben Sie ein Zahl ein ");  
       scanf("%c",&t);
       fflush(stdin);
       switch(t){
       case 'a': printf("Sie haben %c eingegeben\n",t);
       break;    
       case 1: printf("Sie haben %c eingegeben\n",t);
       break;    
       case 3: printf("Sie haben %c eingegeben\n",t);
       break;    
       case 4: printf("Sie haben %c eingegeben\n",t);
       break;    
       default: printf("Irgendwas stimmt nicht\n",t);
       }
    }
    while(t != 'e');
     printf("Irgendwas");  
     printf("Nochmalwas");
     printf("Immernochwas");    
      return 0;
    }



Unteraderem kann man nicht nur nach dem While ein return 0; machen, sondern alles und soviel du willst.
Das while sagt ja nur das du nun hier eben deine schleife beendet hast, unter einer Bedinung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.11.2007, 17:12 Uhr
wolf360



aso okey danke für die hilfe!!

gruß wolf360
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.11.2007, 18:09 Uhr
xXx
Devil



Zitat:
Da du ja Char benutz musst du auch sagen wenn ein Zeichen kommen soll und wann nicht....

Also bei a schreibst du 'a'
Und bei 1 schreibst du 1
Wobei es mit Hochkomma versehen werden sollte
Also bei 1 '1'
Geile Erklärung :P

Also ... @wolf360: kennst du den ASCII-Zeichensatz? Jede Zahl entspricht einem Buchstaben A entspricht z.B. 65. Deine 1 entspricht einem "Start of Header"(SOH). Wenn du jetzt aber '1' nimmst, meinst du das Zeichen, und nicht die ihm zugeordnete Zahl (bei 1 schon!) '1' ist die Zahl 49 zugeordnet
=>

C++:
switch (t)
{
    case 'a':
    case 97: printf("..."); break;
    case '1':
    case 49: printf("---"); break;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.11.2007, 18:37 Uhr
öni



Ja wenn man es selber weiß dann ist es meist schwer jemanden anderen zu erklären was man eigentlich meint... Aber dachte da eher daran das 1 ja sowohl als Zeichen oder als Zahl gesehen werden kann. Und das eben mit Hochkomma das Zeichen gemeint ist...naja egal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.11.2007, 19:15 Uhr
0xdeadbeef
Gott
(Operator)


Möchte an der Stelle anmerken, dass

C++:
fflush(stdin);


undefiniertes Verhalten erzeugt, das ist also ein Bug.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.11.2007, 20:22 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Eher ein Feature das die Sache spannender macht
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.11.2007, 20:32 Uhr
0xdeadbeef
Gott
(Operator)


*Räusper* Ich bin mir ja bewusst, dass Windalf in einer Welt lebt, in der Bugs und Features ein und dasselbe sind, aber es gibt hier auch Leute, die mit der Realität umgehen müssen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ 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: