kleines verwaltungsprogramm für wareneingang
-
hm das hilft mir alles nicht weiter
-
Und warum soll ich raten?
Wo bist du denn steckengeblieben?
-
servus,
ich will nur reelle Zahlen einlesen, aber irgendwie kann ich mit den zwei funktionen nur ganze zahlen einlesen...weiss einfach nicht mehr wie ich das lösen soll
void einlesen_stueckpreis() { printf("Stueckpreis: "); gets(stueckpr); kontrolle_eingabe_stueckpreis(stueckpr); } int kontrolle_eingabe_stueckpreis(char stueckpreis[]) { char a; int i = 0, c = 0; do { a = stueckpreis[0]; while (a!= '\0') { if ((a>='0') && (a<='9') && '.') { c = 1; } else { printf("\nEs ist nur die Einganbe von Reellen Zahalen gueltig!\n\n"); einlesen_stueckpreis(); } a=stueckpreis[++i]; } }while ( c == 0); return 0; }
danke schonmal für lösungsvorschläge
-
Dein Code sieht eher wenig vertrauenswürdig aus:
einlesen_stueckpreis
ruftkontrolle_eingabe_stueckpreis
auf, und umgekehrt, bist du sicher,
daß da nicht noch eine Endlosschleife rauskommt?((a>='0') && (a<='9') && '.')
'.' ist immer wahr. Wahrscheinlich meinst du
((a>='0') && (a<='9') || a=='.'))
In rellen Zahlen sind BTW noch mehr Zeichen als Ziffern und der Punkt zulässig.
Zb + und -, aber auch E und e. Etwas vergessen? Egal, denn:~mngbd schrieb:
Du könntest man: strtof und man: strtold verwenden
Das hatte ich gesagt, und alles, was dir dazu eingefallen ist, war:
hm das hilft mir alles nicht weiter
Also mein Vorschlag für Gleitkommazahlen statt ganzen Zahlen:
int kontrolle_eingabe_stueckpreis(char stueckpreis[]) { char *last = NULL; if (strtold(stueckpreis, &last) == 0.0 && stueckpreis == last) return 1; // stueckpreis ist keine gültige Zahl else return 0; // stueckpreis ist gültig }
Wenn du mir weiterhin nicht sagst, warum dir das nicht weiterhilft, wird mir die Lust vergehen, dir zu helfen.