WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Brauche Hilfe in C (http://www.wcm.at/forum/showthread.php?t=72235)

kikakater 03.10.2002 22:00

Ein default Zweig ist nicht zwingend notwendig, es geht ja nur um das Ausrechnen eines Wertes. Außerdem ist die switch Anweisung im else Zweig einer if(Bedingung==true) Konstruktion eingebettet. Insofern ist dort der default Zweig realisiert ...

pirate man 03.10.2002 22:23

habs jetzt mit einer if-abfrage probiert
für mich wärs logisch, aber es geht nicht - sobald ich was anderes als m oder w eingeb, wird aus dem programm ausgestiegen
Code:

#include <stdio.h>
#include <conio.h>

void main ()

{

clrscr();

printf("Sind Sie (m)„nnlich oder (w)eiblich?\n");

int kg,kgw;

char ge;
ge=getchar();

if(ge!='m' && ge!='w')
{
  printf("\nSie haben eine falsche Eingabe gemacht!");
}
else
{

printf("\nGeben Sie bitte Ihre K”rpergr”áe in Zentimeter ein:\n");

scanf("%d",&kg);

switch(ge)
{
  case 'm':
  kgw=(kg-100)*0.9;
  break;

  case 'w':
  kgw=(kg-100)*0.85;
  break;
}

 printf("\n\nIhr Idealgewicht ist ");
 printf("%d",kgw);
 printf("kg.");

 getch();

}
}


kikakater 03.10.2002 22:57

Ohne erneute Möglichkeit zur - dann korrekten - Eingabe wird das Programm eben weiter ausgeführt. In diesem Fall gibt es eben keine weiteren Befehle nach dem if-Befehl und deswegen wird das Programm beendet.

Verwende eine Schleife um die if() else Konstruktion und ein break; im else Zweig.

Code:

for( ; ; )
{

 key= getch();

 if(key!='m' && key!='M' && key!='w' && key!='W') printf(...);
 else
 {

  scanf(...);

  switch(key)
  {
  ...
  }

  break;
 }

}


pirate man 03.10.2002 23:03

ah, es geht schon
der fehler war, dass das getch(); im else-zweig war ;)

pirate man 03.10.2002 23:30

eine frage hab ich noch
wie bring kann ich das programm dazu bringen, nach der ausgabe ("ihr idealgewicht ist ...") nicht zu schliessen, sondern durch einen tastendruck nochmal von vorn anzufangen (eingabe von geschlecht usw.)?

kikakater 03.10.2002 23:36

Lösung steht oben, eine for Schleife verwenden.

pong 04.10.2002 06:40

Zitat:

Original geschrieben von pirate man
eine frage hab ich noch
wie bring kann ich das programm dazu bringen, nach der ausgabe ("ihr idealgewicht ist ...") nicht zu schliessen, sondern durch einen tastendruck nochmal von vorn anzufangen (eingabe von geschlecht usw.)?

Code:

printf...;
getch();


pirate man 04.10.2002 20:02

hm, hab noch eine frage :rolleyes:
ich will eine aktion ausführen, wenn die eingegebene zahl im bestimmten zahlenbereich ist
beispiel:
wenn die eingegebene zahl im zahlenbereich 10-20 ist, dann den text "blablabla" ausgeben
geht das nur mit if oder auch mit switch/case? habs mit switch/case probiert, aber leider dürften da < und > nicht gehen :(

pc.net 04.10.2002 20:11

bei switch/case kannst du nur exakte werte abfragen ... wertebereich gehen nur mit if ...

pirate man 04.10.2002 20:13

ok, thx


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag