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)

pirate man 03.10.2002 20:21

Brauche Hilfe in C
 
ich bräucht wieder mal eure hilfe in c

unser 1. programm in der schule rechnet das idealgewicht abhängig vom geschlecht aus

mann gibt m oder w ein (fürs geschlecht) und die größe - ausgegeben wird dann das idealgewicht

für den fall, dass etwas anderes als m oder w eingegeben wird, soll sofort nach der eingabe des geschlechts eine meldung kommen, die auf den fehler aufmerksam macht

aber die meldung kommt erst nach eingabe der körpergröße :(

hier is der code:

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();

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;

  default: printf("\nSie haben eine falsche Eingabe gemacht!");
}

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

 getch();

}

ich hoffe, ihr könnt mir helfen
danke, schon mal

pc.net 03.10.2002 20:31

soweit ich mich erinnere, sollte das so gehen ...

Code:

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

void main ()

{

clrscr();

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

int kg,kgw;
char ge="a";

// endlosschleife, aus der man nur mit der richtigen eingabe (m oder w) rauskommt
while(ge!='m' &&
      ge!='M' &&
      ge!='w' &&
      ge!='W')
{
  ge=getchar();
}


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;

  default: printf("\nSie haben eine falsche Eingabe gemacht!");
}

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

 getch();

}


pirate man 03.10.2002 20:40

laut unserem lehrer sollte das mit switch/case zu lösen sein - ohne schleife

pirate man 03.10.2002 20:50

hab jetzt deinen code probiert
wenn ich etwas anderes als m oder w eingeb, hupft der cursor in die nächste zeile und es tut sich nix

kikakater 03.10.2002 21:37

Du solltest die Tastatureingabe ohne Bildschirmecho machen und vor dem scanf mit gotoxy(x,y); den Cursor positionieren. Die Bedingung der while Schleife ist jedenfalls gut gelöst.

Für x und y musst Du selbstverständlich eigene Werte als Literale (=Direktwerte) verwenden, also zum Beispiel gotoxy(2,10); Spalte 2 Zeile 10

mfg Kikakater

pirate man 03.10.2002 21:44

Zitat:

Original geschrieben von kikakater
Du solltest die Tastatureingabe ohne Bildschirmecho machen und vor dem scanf mit gotoxy(x,y); den Cursor positionieren. Die Bedingung der while Schleife ist jedenfalls gut gelöst.

Für x und y musst Du selbstverständlich eigene Werte als Literale (=Direktwerte) verwenden, also zum Beispiel gotoxy(2,10); Spalte 2 Zeile 10

mfg Kikakater

sorry, aber das check ich nicht ;)

kikakater 03.10.2002 22:02

Code:

while(!kbhit()); /* solange keine Taste gedrückt wird kommt bei kbhit() 0 (=false) zurück */

key= getch(); if(kbhit()) key= getch(); /* 2 x getch notwendig für Sondertasten */

if(key>='A' && key<='Z') key+=32; /* von Großbuchstaben generell auf Kleinbuchstaben umschalten */

if(key!='m' && key!='w') printf("falsche Eingabe, m für männlich oder w für weiblich erwartet\n");
else
{

 switch(key) {

  case 'm':

  ...
  break;

  case 'w':

  ...
  break;
 }

}


pirate man 03.10.2002 22:12

das wird unserem lehrer mit sicherheit zu kompliziert sein
die befehle/funktionen, die du verwendest, haben wir noch nicht mal besprochen

kikakater 03.10.2002 22:20

Jedenfalls funktioniert es (Borland C), sonst halt nur key= getch(); verwenden und bei der switch Anweisung:

Code:

case 'm':
case 'M':

...
break;

case 'w':
case 'W':

...
break;


pong 03.10.2002 22:29

@kikakater hab zwar schon lang kein c mehr gesehn, aber fehlt bei deinem case nicht ein default wert (sorry falls ich mich irre)


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:34 Uhr.

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