Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Switch/Case funkt nicht

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
25.05.2005, 15:51 Uhr
~St Lucifer
Gast


also, ich wollte zum üben mal nen Taschenrechner mit switch/case programmieren. funzt aber nicht so ganz. die Zahlen eingabe geht noch, aber nachdem man die zahlen eingegeben hat steht wirrwar aufem Bildschirm.


C++:
#include <stdio.h>
#include <conio.h>

int main (void)
{
int zahl1, zahl2;
char auswahl;

printf("Bitte erste Zahl eingeben: ");
scanf("%d", &zahl1);
printf("Bitte zweite Zahl eingeben: ");
scanf("%d", &zahl2);

printf("Rechenoperation auswählen\n A)ddition\n S)ubtraktion\n M)ultiplikation\n D)ivision");
scanf("%c", &auswahl);

  switch(auswahl)
  {
   case 'a' : case 'A' : printf("Das Ergebnis ist: %d", (zahl1 + zahl2)); break;
   case 's' : case 'S' : printf("Das Ergebnis ist: %d", (zahl1 - zahl2)); break;
   case 'm' : case 'M' : printf("Das Ergebnis ist: %d", (zahl1 * zahl2)); break;
   case 'd' : case 'D' : printf("Das Ergebnis ist: %d", (zahl1 / zahl2)); break;
   default : printf("Ungueltige Eingabe! Programm beenden!");
  }

getch();
}



was issen da falsch?

thx


Bearbeitung:

Bevor Pablo ein Herzinfakt bekommt hab ich mal aus dem void main ein int main gemacht...


Dieser Post wurde am 25.05.2005 um 16:12 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.05.2005, 15:53 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von ~St Lucifer:

scanf("%d", &zahl1);


ersetz das %d mal durch ein %i
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.05.2005, 15:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Anmerkung... ein switch(tolower(auswahl)) spart jeweils ein "case"...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.05.2005, 16:09 Uhr
~St Lucifer
Gast


@Guybrush Threepwood,
das kann man ja beides schreiben, das ist wayne, habs trotzdem auch so versucht, macht keinen unterschied.

@Windalf,
wie müsst ich dann die case zeile schreiben?
so oder was?


C++:
case 'a' :  'A' : printf("Das Ergebnis ist: %d", (zahl1 + zahl2)); break;

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.05.2005, 16:11 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


tolower wandelt dir schon in einen kleinbuchstaben um... das heisst dann also du kannst den fall mit dem grossbuchstaben einfach weglassen...


C++:
case 'a' : printf("Das Ergebnis ist: %d", (zahl1 + zahl2)); break;


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.05.2005, 16:19 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


habs nicht getestet hab aber so ne vermutung worans liegen könnte...
probier mal

C++:
#include <stdio.h>
#include <ctype.h>

int main (void)
{
int zahl1, zahl2;
char auswahl;

printf("Bitte erste Zahl eingeben: ");
scanf("%d", &zahl1);
printf("Bitte zweite Zahl eingeben: ");
scanf("%d", &zahl2);

fflush(stdin);
printf("Rechenoperation auswählen\n A)ddition\n S)ubtraktion\n M)ultiplikation\n D)ivision\n");
scanf("%c", &auswahl);

  switch(tolower(auswahl))
  {
   case 'a' : printf("Das Ergebnis ist: %d", (zahl1 + zahl2)); break;
   case 's' : printf("Das Ergebnis ist: %d", (zahl1 - zahl2)); break;
   case 'm' : printf("Das Ergebnis ist: %d", (zahl1 * zahl2)); break;
   case 'd' : printf("Das Ergebnis ist: %d", (zahl1 / zahl2)); break;
   default : printf("Ungueltige Eingabe! Programm beenden!");
  }

getchar();
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.05.2005, 16:21 Uhr
~St Lucifer
Gast


och, das ist ja Praktisch^^

thx

wäre nur gut wenn dann auch der rest vom prog auch funkt^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.05.2005, 16:25 Uhr
Tommix



Jepp, das isses.

C++:
scanf("\n%c", &auswahl);


tut es auch. Ich würde dem Ganzen auch noch ein int ergebnis spendieren um nicht vier mal den gleichen printf - Text im Programm zu haben und conio ist kein Standard - nur wegen dem getchar() !

- Tommix


Bearbeitung von Tommix:
Die Schlußbemerkung war Unfug.

Dieser Post wurde am 25.05.2005 um 16:27 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.05.2005, 16:28 Uhr
0xdeadbeef
Gott
(Operator)



Zitat von Windalf:


C++:
fflush(stdin);



Das ist hoffentlich nicht dein Ernst, oder? Man kann laut Standard nur Ausgabestreams flushen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
25.05.2005, 16:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Das ist hoffentlich nicht dein Ernst, oder? Man kann laut Standard nur Ausgabestreams flushen.


Das gilt nur für Leute die "beschränkte Compiler" benutzen
--
...fleißig wie zwei Weißbrote
 
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: