WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 03.10.2002, 19:21   #1
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard 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
pirate man ist offline   Mit Zitat antworten
Alt 03.10.2002, 19:31   #2
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

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

}
____________________________________
Praktizierender Eristiker

No hace falta ser un genio para saber quién dijo eso.
Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein.
pc.net ist offline   Mit Zitat antworten
Alt 03.10.2002, 19:40   #3
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard

laut unserem lehrer sollte das mit switch/case zu lösen sein - ohne schleife
pirate man ist offline   Mit Zitat antworten
Alt 03.10.2002, 19:50   #4
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard

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
pirate man ist offline   Mit Zitat antworten
Alt 03.10.2002, 20:37   #5
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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
kikakater ist offline   Mit Zitat antworten
Alt 03.10.2002, 20:44   #6
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard

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
pirate man ist offline   Mit Zitat antworten
Alt 03.10.2002, 21:02   #7
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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;
 }

}
kikakater ist offline   Mit Zitat antworten
Alt 03.10.2002, 21:12   #8
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard

das wird unserem lehrer mit sicherheit zu kompliziert sein
die befehle/funktionen, die du verwendest, haben wir noch nicht mal besprochen
pirate man ist offline   Mit Zitat antworten
Alt 03.10.2002, 21:20   #9
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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;
kikakater ist offline   Mit Zitat antworten
Alt 03.10.2002, 21:29   #10
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

@kikakater hab zwar schon lang kein c mehr gesehn, aber fehlt bei deinem case nicht ein default wert (sorry falls ich mich irre)
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


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


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