000
24.11.2003, 15:39 Uhr
~Sven
Gast
|
Bei folgendem Code tritt das Problem auf, dass das Programm bei der Eingabe von 0.10 und 0.20 in den else-Zweig springt (Betrag kann nicht angenommen werden). Bei allen anderen Werten (0.50, 1, 2 ...) tritt das gewünscht Ergebnis auf.
Kann mir jemand sagen warum das so ist?
C++: |
float geldeinwurf(float kartenwert, struct geld *speicher) { float summe=0, betrag;
do { fflush(stdin); scanf("%f", &betrag);
if(betrag==0.10) { summe+=0.10; speicher[0].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else if(betrag==0.20) { summe+=0.20; speicher[1].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else if(betrag==0.50) { summe+=0.50; speicher[2].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else if(betrag==1.00) { summe+=1.00; speicher[3].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else if(betrag==2.00) { summe+=2.00; speicher[4].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else if(betrag==5.00) { summe+=5.00; speicher[5].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else if(betrag==10.00) { summe+=10.00; speicher[6].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else if(betrag==20.00) { summe+=20.00; speicher[7].bestand++; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); } else { printf("\n\nBetrag kann nicht angenommen werden\n\n"); summe+=0; printf("\nPreis: %.2f\n", kartenwert); printf("Eingeworfen: %.2f\n\n", summe); }
}while(summe < kartenwert);
return(summe); }
|
Bitte selber [CPP] Tags einfügen! - virtual Dieser Post wurde am 24.11.2003 um 15:45 Uhr von virtual editiert. |