Brauche Hilfe in C - Seite 2

Seite 2 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/brauche_hilfe_in_c_50522/page_2 - zur Vollversion wechseln!


disposableHero schrieb am 03.10.2002 um 22:31

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


Duron schrieb am 03.10.2002 um 22:33

solls in etwa so aussehen?


watchout schrieb am 03.10.2002 um 22:35

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 schrieb am 03.10.2002 um 22:39

true, watchout.

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


disposableHero schrieb am 03.10.2002 um 22:40

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=- schrieb am 03.10.2002 um 22:44

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=- schrieb am 03.10.2002 um 22:55

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


pirate man schrieb am 03.10.2002 um 23:00

juhu, jetzt gehts
der fehler war, dass das getch(); im else-zweig war
big thx @ neo


Master99 schrieb am 03.10.2002 um 23:01

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 schrieb am 03.10.2002 um 23:31

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 schrieb am 03.10.2002 um 23:33

mit einer Schleife.


Newcron schrieb am 04.10.2002 um 08:24

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 schrieb am 04.10.2002 um 09:15

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 schrieb am 04.10.2002 um 10:26

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 schrieb am 04.10.2002 um 13:12

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




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025