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 04.10.2002 21:24

Na geht eh mit switch/case:

Code:

category= (kg < 10) ? 1 : (kg < 20) ? 2 : (kg < 30) ? 3 : 4;

if(kg<0) category=0;

switch(category)
{
 case 1:
  printf("kg liegt zwischen 0-9\n");
  break;

 case 2:
  printf("kg liegt zwischen 10-19\n");
  break;

 case 3:
  printf("kg liegt zwischen 20-29\n");
  break;

 case 4:
  printf("kg ist 30 oder höher\n");
  break;

 default:
  printf("kg ist in keinem definierten Wertebereich\n");
  break;

}


pirate man 04.10.2002 21:33

hm, mein programm hat einige fehler - und zwar in den zeilen 22, 26, 32, 32, 38, 38, 44, 55
das programm hab ich an diesen post angehängt
ich weiß leider nicht, was ich falsch gemacht hab - trotz dem text, den turbo c ausgibt :(

pc.net 04.10.2002 21:38

@kikakater
boah, elegant ... auf die idee hätt ich eigentlich auch schon mal kommen können :rolleyes:

kikakater 04.10.2002 21:40

Cooles Programm :D

numerische_variable < 22

und nicht

numerische_variable '<22'

die Apostroph Zeichen werden nur für einzelne ASCII also char (=Character) Zeichen verwendet um eben die gerade genannten (ASCII bzw. char) Zeichen zu umschliessen.

Also entweder:

char_variable < 'A'

oder (gleichbedeutend):

char_variable < 65

kikakater 04.10.2002 21:42

@pc.net: Ja ... Hi Fans, Victory Zeichen, *Herum geh 360°* :D

kikakater 04.10.2002 22:21

Code:

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

char *diagnose[] = { "Unter" , "Ideal" , "Normal" , "Über" };

void main ()
{
 int gr=1,kgw;
 char ge;
 int diagnose_index;

 for( ; ; )
 {
  clrscr();

  printf("Geben Sie bitte ihr Geschlecht ein (m für männlich/w für weiblich oder e für Ende): ");
  for( ge = 0
    ; ge != 'm' && ge != 'w' && ge != 'e'
    ; printf("\nSie haben eine falsche Eingabe gemacht! Bitte m/w oder e eingeben ") )
  {
  ge=getchar();
  if( ge >= 'A'  &&  ge <= 'Z' ) ge += 32;
  }

  if( ge == 'e' ) break;

  printf("\nGeben Sie bitte Ihr Körpergewicht ein: ");
  scanf("%d",&kgw);
  bmi=kgw/(gr*gr); /* der Wert von gr ist undefinert !!!!!!!!!!! ????????????, im Moment hab' ich gr mit 1 initialisiert :rolleyes: */

  if(ge=='m') diagnose_index = (bmi < 22) ? 0 : (bmi < 24) ? 1 : (bmi < 26) ? 2 : 3;
  if(ge=='w') diagnose_index = (bmi < 21) ? 0 : (bmi < 23) ? 1 : (bmi < 25) ? 2 : 3;

  printf("Sie haben %sgewicht, da Sie einen BMI von %d haben. <Taste> " ,diagnose[diagnose_index] ,bmi);
  getch();

 }

}


pirate man 04.10.2002 22:28

@ kikakater
soweit simma noch gar ned
hab jetzt nochmal das programm angehängt, hab noch immer 6 fehler drin :(

kikakater 04.10.2002 22:38

Code:

printf("%d",&bmi);
-------------^ des is foisch, tut leid

& ist der 'address of' Operator

& bmi oder &bmi oder &      bmi bedeutet liefere die Adresse von bmi

Bei printf musst Du '&' beim Verwenden einer numerischen Variablen weglassen, sonst bekommst Du ein undefiniertes Ergebnis beim printf, möglicherweise einen Laufzeitfehler (falsch gesetzter Stackpointer), weil eine Adresse vier Bytes am Stack belegt, printf nimmt bei '%d' in der Formatangabe aber nur zwei Bytes vom Stack, insofern gibt es deswegen vielleicht sogar einen Programmabsturz.

kikakater 04.10.2002 22:52

variable => 1 ist falsch, es muss variable >= 1 heißen

Als letzte Zeile musst Du noch eine "geschweifte Klammer geschlossen" anfügen >>> } <<<

Du hast eine Klammerebene übersehen ...

Ich wollte Dich zuerst selber die Fehler finden lassen.

Du musst die Fehlerhinweise der Integrierten Entwicklungsumgebung von Turbo C bzw. wahlweise die Compilerfehlermeldungen im Konsolenfenster (DOS) kennenlernen und Bescheid wissen, was sie bedeuten.

pirate man 04.10.2002 22:52

hm, jetzt bleiben noch 2 fehler:
zeile 22: undefined symbol 'bmi'
zeile 55: compound statement missing }


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:08 Uhr.

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