"We are back" « oc.at

Brauche Hilfe in C

pirate man 03.10.2002 - 21:57 1856 40
Posts

disposableHero

Addicted
Avatar
Registered: Mar 2001
Location: A&EE
Posts: 442
probiers so

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

void main ()
{
  int kg,kgw;
  char ge;

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

  do{
     ge=getche();
  }while(ge!='w' || ge!='m')      //solange wiederholen bis Eingabe korrekt
         //solange ge NICHT GLEICH 'w' ODER ge NICHT GLEICH 'm'
        //'x' NICHT "x" !!!

  printf("\nGeben Sie bitte Ihre Körpergröße in Zentimeter ein:\n");
  scanf("%d",&kg);

  if(ge=='m')
    kgw=(kg-100)*0.9;
  
  if(ge=='w')
    kgw=(kg-100)*0.85;           //sind das offizielle Formeln? ;)
  
  
  printf("\nIhr Idealgewicht ist %d kg",kgw);  //und wieder 2 Zeilen gespart ;)
  
  getch();
}
Bearbeitet von disposableHero am 03.10.2002, 22:34

Duron

Here to stay
Avatar
Registered: Aug 2000
Location: /home
Posts: 3182
solls in etwa so aussehen?
project1_16913.zip (downloaded 42x)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
also, imho hast du derzeit kein problem mit c, sondern mit dem programmaufbau, du solltest dir das mal 'ausserhalb' des pc's überlegen - weil es hat ja keinen sinn, wenn wir's dir hier diktieren (ok, ich kanns eh net, weil ich kein c kann, dafür das gleiche prog in php oder vb schreib ich dir in 5 min.) dann hast du's wieder mal abgeschrieben aber kapiert wahrscheinlich trotzdem net...
is net bös' gemeint, aber isso, ich kenn das zur genüge von meinem edv-unterricht ;)

Duron

Here to stay
Avatar
Registered: Aug 2000
Location: /home
Posts: 3182
true, watchout.

ich hatte auch immer leichte probs beim programmieren.
gelöst hab ich sie durch schleimen, abschreiben und zum schluss durch lernen :)

disposableHero

Addicted
Avatar
Registered: Mar 2001
Location: A&EE
Posts: 442
Zitat von watchout
also, imho hast du derzeit kein problem mit c, sondern mit dem programmaufbau, du solltest dir das mal 'ausserhalb' des pc's überlegen - weil es hat ja keinen sinn, wenn wir's dir hier diktieren (ok, ich kanns eh net, weil ich kein c kann, dafür das gleiche prog in php oder vb schreib ich dir in 5 min.) dann hast du's wieder mal abgeschrieben aber kapiert wahrscheinlich trotzdem net...
is net bös' gemeint, aber isso, ich kenn das zur genüge von meinem edv-unterricht ;)

muss watchout recht geben! bin nicht um sonst nichtmehr an der htl :)

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3233
Zitat von pirate man
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();

}
}

der fehler hier is noch, dass getch (das warten vor auf tastendruck vor beenden) in dem else zweig is und net allgemein am ende :)


aja @ programmaufbau:
normalerweise macht man am anfang von der hauptfunktion (bzw von funktionen) alle variablendefinitionen und dann steht nur noch programmcode
dadurch wirds gleich viel übersichtlicher

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3233
so hätts ich gmacht:
Code:
#include <stdio.h>
#include <conio.h>

void main()
{
  int kg,gw;
  char ge;

  clrscr();
  printf("Sind Sie (m)aennlich oder (w)eiblich?");
  ge = getch();
  if (ge != 'm' || ge != 'w')
    printf("\nSie haben eine falsche Eingabe gemacht");
  else
  {
    printf("\nGeben Sie bitte Ihre Koerpergroesse in Zentimeter ein:\n");
    scanf("%d",&kg);
    switch(ge)
    {
      case 'm':
      gw=(kg-100)*0.9;
      break;

      case 'w':
      gw=(kg-100)*0.85;
      break;
    } // end switch
    printf("\n\nIhr Idealgewicht ist: %d kg",kgw);
  } //end else
  getch();
} //end
Bearbeitet von Neo-=IuE=- am 03.10.2002, 22:58

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5609
juhu, jetzt gehts
der fehler war, dass das getch(); im else-zweig war
big thx @ neo

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12753
jo, sorg amoi dafür, dass du da a bissal a Struktur rein bringst!

C unterscheides zwischen Groß- und Kleinschreibung!

es is z.b. sehr unübersichtlich, wie du das hier machst:


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!");
}


weil dann braucht man nämlich erstmal ne zeit, bis man checkt, unter welcher variable M oder W überhaupt gespeichert wird bzw. was die variable ge überhaupt für ne bedeutung hat!

also machs so:


int kg,kgw;
char ge;

do
{
printf("Sind sie (m)aennlich oder (w)eiblich?");
ge = getchar();

if(....)
printf("Eingabe falsch")
}
while(ge != 'm' && ge != 'M' && ge != 'w' && ge != 'W')

pirate man

Here to stay
Registered: Jul 2001
Location: @ home
Posts: 5609
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.)?

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11344
mit einer Schleife.

Newcron

Bloody Newbie
Registered: Oct 2001
Location: Klosterneuburg
Posts: 22
an Master99:
du könntest es natürlich auch so machen, was noch viel bessere stilvolle programmierung wäre:

Code:
printf("m/w?"); 
do
{
ge=tolower(getch());
} while (ge!="m" || ge!="w")
// da gehört ein OR mit AND geht das nicht soweit ich mich erinnern kann..

Duron

Here to stay
Avatar
Registered: Aug 2000
Location: /home
Posts: 3182
Zitat 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.)?


das ganze programm in eine do-while schleife rein:



Zitat
do
{

ganzes Programm

printf("Neustart mit beliebiger Taste, beenden mit 'q'");
}
while(getch() != 'q')


Da beendest das Programm wennst 'q' eingibst und es startet neu wennst irgendwas anderes eingibst.

disposableHero

Addicted
Avatar
Registered: Mar 2001
Location: A&EE
Posts: 442
Zitat von Newcron
an Master99:
du könntest es natürlich auch so machen, was noch viel bessere stilvolle programmierung wäre:

Code:
printf("m/w?"); 
do
{
ge=tolower(getch());
} while (ge!="m" || ge!="w")
// da gehört ein OR mit AND geht das nicht soweit ich mich erinnern kann..


stimmt, und wennst genau schaust habe ich das auch schon gemeldet

MDK

Addicted
Registered: Mar 2002
Location: Vlbg
Posts: 457
das halte ich jetzt aber für ein Gerücht:

bei ge=="m" würde es dann so auschauen
ge!="m" --> false
ge!="f" --> true
false || true --> true

bei ge=="f" würde es dann so auschauen
ge!="m" --> true
ge!="f" --> false
true || false --> true

bei ge=="y" würde es dann so auschauen
ge!="m" --> true
ge!="f" --> true
true || true --> true
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz