"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Brauche Hilfe in C

pirate man 03.10.2002 - 21:57 1682 40
Posts

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5562
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

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
dann solltest du vielleicht eine zweite abfrage früher machen, klar, JETZT wird per switch einfach überprüft, ob das eine oder das andere stimmt, wenn net kommt default und DANN kommt natürlich die message mit der falschen eingabe

MDK

Addicted
Registered: Mar 2002
Location: Vlbg
Posts: 457
ohne dass ich jetzt C könnte:
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!='m')
{
 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();
 }
}

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5562
default is ja die message für die falsche angabe

Duron

OC Addicted
Avatar
Registered: Aug 2000
Location: /home
Posts: 3174
gleich nach der eingabe eine if-anweisung hinmachen


also:

if(eingabe != m && w)
{
printf("Falsche Eingabe!")
}

else
....

aNtraXx

trailer park king
Avatar
Registered: Apr 2002
Location: Linz
Posts: 6906
kannst den source in einem "schönen stil" posten? bin ned gewohnt c aus so einer zeichenschlange zu lesen und mich gfreuts ned des auseinanderzuschlichten ;)

Newcron

Bloody Newbie
Registered: Oct 2001
Location: Klosterneuburg
Posts: 22
hi!
naja ansich ist das komisch (und es ist lang her, dass ich was mit C zu tun hatte), aber meinen erinnerungen entsprechend klingt das nach etwas, mit dem mich Visual C++ 6 in den Wahnsinn getrieben hat, weil das hatte auch die angewohnheit das zu tun. Logisch ist es nicht, du wirst da wohl schrittweise durchgehen müssen (debug-modus und dann mit steps vorarbeiten)
oder du änderst den algoritmus zum geschlecht einlesen in das hier ab:

Code:
do
{
ge=getchar();
} while(ge!="m" && ge!="w")

was tuts?
durch die schleife wird so lange durchgerannt, solange in ge (und zwar immer NACH der eingabe) WEDER m noch w drin steht (while(ge IST NICHT m UND ge IST NICHT w) )
das gibt zwar keine fehlermeldung aus, akzeptiert aber nichts anderes und ist meiner meinung nach cooler!

Duron

OC Addicted
Avatar
Registered: Aug 2000
Location: /home
Posts: 3174
Zitat von aNtraXx
kannst den source in einem "schönen stil" posten? bin ned gewohnt c aus so einer zeichenschlange zu lesen und mich gfreuts ned des auseinanderzuschlichten ;)


der _stil_ is meiner meinung nach schön genug und übersichtlich.

andere schreibens gleich in einem absatz runter ;)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
[Way OT]

Brrr, nach so vielen Jahren verwenden's immer noch bcc für DOS in der Schule!

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Wie schon geschrieben, schieb halt die Überprüfung der Fehlerbedingung weiter rauf, wahrscheinlich magst auch noch eine Schleife machen, die so lange fragt, bis was vernünftiges eingegeben wurde.

aNtraXx

trailer park king
Avatar
Registered: Apr 2002
Location: Linz
Posts: 6906
das hab ich mir auch schon gedacht wieso ned was anständiges

naja wennst dich a bissl anstrengst kannst auch das lesen aber unter "übersichtlich" versteh ich was anderes

Duron

OC Addicted
Avatar
Registered: Aug 2000
Location: /home
Posts: 3174
bei so kurzen programmen würde ich die variablen noch global deklarieren.

gibt auch noch übersichtpunkte dazu :p

Newcron

Bloody Newbie
Registered: Oct 2001
Location: Klosterneuburg
Posts: 22
an ringding:
wegen schleife: s.o. ;)
und wegen bcc: na klar, womit sollte man sonst anfangen? Ich finde zum programmieren lernen gibt es nichts besseres. Man will einen Anfänger ja nicht mit Windows-Programmierung belasten (und die Visual Umgebung ist auch recht komplex), Visual Basic nenne ich nicht programmieren, und dafür sollte man ausserdem ein verständnis für objekte haben, Java zum Programmieren lernen: vergiss es(konstruktor,polymorphie,zugriffsrechte,klassenklassen,...)! bleiben nur noch das gute alte C (von dem man sich dann zu C++ vorwärtskämpft) und Pascal, wobei C irgendwie mehr sinn macht, als pascal, weil man darauf C++ aufbauen kann und auf das dann eine ganze menge!

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5562
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();

}
}
Bearbeitet von pirate man am 03.10.2002, 22:25

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Edit: bullshit... :rolleyes:

musst du's vielleicht mit einer schleife machen, ich kann zwar net c, aber imho fragt die key-funktion den aktuellen tastencode ab (was einbisserl groggy is' aber was solls...)
Bearbeitet von watchout am 03.10.2002, 22:30
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz