URL: https://www.overclockers.at/coding-stuff/brauche_hilfe_in_c_50522/page_2 - zur Vollversion wechseln!
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(); }
solls in etwa so aussehen?
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
true, watchout.
ich hatte auch immer leichte probs beim programmieren.
gelöst hab ich sie durch schleimen, abschreiben und zum schluss durch lernen
Zitat von watchoutalso, 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
Zitat von pirate manhabs 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 ausgestiegenCode:#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(); } }
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
juhu, jetzt gehts
der fehler war, dass das getch(); im else-zweig war
big thx @ neo
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')
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.)?
mit einer Schleife.
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..
Zitat von pirate maneine 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.)?
Zitatdo
{
ganzes Programm
printf("Neustart mit beliebiger Taste, beenden mit 'q'");
}
while(getch() != 'q')
Zitat von Newcronan 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..
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