negative Zahlen einlesen
-
Moinsen Leutz,
ich schreibe eine Funktion, in der Zahlen eingelesen werden.
klappt alles wunderbar.
nur bei Zahlen mit - (negative Zahlen) macht sie nichts richtig.
ist das normal und/oder gibt es spezielle Funktionen für negative zahlen.Gruß
-
Zeigst du den Code? Meine Kristallkugel ist gerade in der Werkstatt.
-
hab sie für dich repariert:
Es werde Licht im dunkeln-->
int readint(char msg[], int lower, int upper) { int zahl, n,c,i; char temp[100]; do { printf("%s", msg); n=scanf("%99s", temp); for (i=0; i<strlen(temp); i++){ if(!isdigit(temp[i])) n=0; } if (n==1) zahl = atoi(temp); while (getchar() != '\n') ; if (n != 1) printf("\nEingabefehler!\n\n"); else if (zahl < lower) { printf("\nDer Wert muss groesser oder gleich %i sein!\n\n", lower); n = 0; } else if (zahl > upper) { printf("\nDer Wert muss kleiner oder gleich %i sein!\n\n", upper); n = 0; } } while (n != 1); return zahl;
-
Hast du mal getestet, was isdigit('-') zurückgibt?
P.S.:
Du solltest an deiner Einrückung arbeiten
-
Ähh,
nö. und ich weiss auch nicht was du damit meinst. (SORRY!)
das mit der einrückung sind individuelle Fähigkeiten einen Code zu lesen....nee, wohl doch eher anfängerfehler :p
-
Du rufst für jedes eingelesene Zeichen in temp isdigit auf. Wenn du eine negative Zahl eingibst, ist da ein Minuszeichen dabei. Das heißt, du rufst effektiv isdigit('-') auf. Und das ergibt 0, weil das Minuszeichen keine Ziffer ist. Dann setzt du n auf 0 und gibst "Eingabefehler" aus.
-
also kann ich es so nicht einfach ändern, wenn ich die bisherige Funktionalität beibehalten will??
-
if(!isdigit(temp[i]) && temp[i] != '-')
Wörtlich:
Wenn das Teil keine Zahl ist und auch kein Minuszeichen.
-
Wilmapower schrieb:
also kann ich es so nicht einfach ändern, wenn ich die bisherige Funktionalität beibehalten will??
einfach schauen ob das 1. Zeichen ein - oder + ist