Prüfen auf Double- Zahl
-
Hallo,
ich hänge hier grad an einem Projekt...Ein Programm soll prüfen, ob die eingegebene Zeichenfolge eine korrekte Gleitkomma- oder Integerzahl ist.
Ausgegeben wird der Zahlenwert oder eine Fehlermeldung. Die Prüfung erfolgt in einer Funktion int isDouble(char* s).
Die Zeichenfolge s darf nur Ziffern, einen Punkt und einmal + oder – als erstes Zeichen enthalten.
Dann wird der Wert 1 zurückgegeben, anderenfalls 0.
Falls die Prüfung der Eingabe mit isDouble keine Fehler ergibt, wird der Dezimalwert der Zeichenfolge s mit der Funktion double atof(char* s) aus <stdlib.h> berechnet. Schreiben Sie die Funktion isDouble und ein Hauptprogramm, das mit einer Schleife immer wieder zur Eingabe auffordert. Nach Prüfung der Eingabe wird der Zahlenwert oder eine Fehlermeldung ausgegeben.Ich möchte das ganze gerne Schritt für Schritt angehen.
Als erstes lese ich die Zeichen in ein Arry ein.
Nun hänge ich bei der Prüfung auf die geforderten eigenschaften.
Jemand eine Idee wie man das Prüfen könnte?
-
Hallo,
du kannst durch das Array durchgehen, jedes Zeichen prüfen und entscheiden, ob es gültig ist.Gruß,
B.B.
-
Huhu,
du gehst einfach jedes Zeichen durch und schaust nach ob es ein '.' ist. Wenn ja, dann ist es eine Gleitkommazahl.
-
wie kann ich denn das /0 Zeichen am Ende wegbekommen, dass macht mir Probleme.
-
atoi(x) != atof(x)
-
cs-loader schrieb:
wie kann ich denn das /0 Zeichen am Ende wegbekommen, dass macht mir Probleme.
Inwiefern macht dir das \0 Probleme ?
char* x = "12131.31" ; while ( *x ) // Solange das Zeichen nicht '\0' ist. { //Mach_was(); }
Merk dir: '\0' != '0'
-
ok wie könnte es dann weitergehen?
-
sunny31 schrieb:
du gehst einfach jedes Zeichen durch und schaust nach ob es ein '.' ist. Wenn ja, dann ist es eine Gleitkommazahl.
also ist "...." eine gleitkommazahl? *fg*
nee, so war das bestimmt nicht gedacht.
-
cs-loader schrieb:
ok wie könnte es dann weitergehen?
ungefähr so:
erstes zeichen testen: weder +,-, punkt noch ziffer? -> abbruch, kein float
folgende zeichen testen: weder punkt noch ziffer? -> abbruch, kein float
während des testens punkte zählen. anzahl gefundene punkte >1 -> abbruch, kein float