Länge einer Zahl im Integerformat herausfinden
-
Hallo!
Gibt es eine Möglichkeit die Länge bzw. die Anzahl der Stellen einer Integerzahl herauszufinden.
Das Problem ist, dass auch Nullen am Anfang der Zahl gezählt werden sollen.
z.B.
005689 = 6 StellenWäre echt super, wenn einer eine Lösung hat.
Gruß MpLion
-
Eine Integerzahl hat keine Nullen am Anfang.
-
Wie jetzt?
Handelt es sich um einen Integer oder um Text? Wenn du eine Variable vom Typ int hast und dort diese Zahl drinsteht, dann gibt es in dem Sinne keine führenden 0en. Wenn das ganze in einem char-Array ist, dann kommt es drauf an wie die Zahl drin abgespeichert ist.
-
Da eine gewöhnliche Integerzahl in freier Wildbahn heutzutage meist 32Bit speichert ist die größte darstellbare Zahl 2147483647, da Integer vorzeichenbehaftet sind +2147483647, ergo hat eine Integerzahl mit führenden Nullen und Vorzeichen 11 Stellen.
War doch einfach, oder?
-
Ich bin gerade dabei ein "Zahlencode-Rate-Spiel"[Mastermind mit Zahlen] zu programmieren.
Wenn der Spieler mehr als 4 Stellen eingibt (oder weinger als 4), muss das Programm abbrechen.
In dem Zahlencode dürfen aber auch Nullen vorne stehen, also kann ich es nicht durch Division feststellen, wie lang die Zahl ist.Ich hab' auch schon die Zahl im "char" eingelesen, sodass ich mit "strlen" die Stellen auslesen konnte. Aber dann bin ich daran gescheitert aus dem "char" ein "integer" zu machen.
Ich hoffe, dass mein Problem jetzt etwas deutlicher geworden ist.
Wisst ihr vielleicht, wie ich aus einer "char-zahl" eine "int-zahl" mache?
-
Ist das nicht von hinten durchs Knie in den Kopf oder so?
Überprüfe doch, ob die eingegebene Zahl kleiner als 10000 ist, dann hast Du alle Möglichkeiten von 0000 bis 9999 abgedeckt...
EDIT: Ergänzend sei gesagt, dass wenn der Benutzer "44" eingibt, Du ruhig "0044" als zu erratende Zahl annehmen darfst (oder?)
-
LordJaxom schrieb:
Ist das nicht von hinten durchs Knie in den Kopf oder so?
Überprüfe doch, ob die eingegebene Zahl kleiner als 10000 ist, dann hast Du alle Möglichkeiten von 0000 bis 9999 abgedeckt...
EDIT: Ergänzend sei gesagt, dass wenn der Benutzer "44" eingibt, Du ruhig "0044" als zu erratende Zahl annehmen darfst (oder?)
Naja, eigentlich soll die Zahl 100%ig mit der Eingabe übereinstimmen.
In dem Zahlencode dürfen aber auch Nullen vorne stehen
Da habe ich mich ein bisschen undeutlich ausgedrückt. Es dürfen Zahlen jeweils nur einmal vorkommen.
Überprüfe doch, ob die eingegebene Zahl kleiner als 10000 ist, dann hast Du alle Möglichkeiten von 0000 bis 9999 abgedeckt...
Wenn eine 01234 eingegeben wird, soll abgebrochen werden. Und das kann ich mit deinem Vorschlag leider nicht umsetzen.
-
MpLion schrieb:
Ich hab' auch schon die Zahl im "char" eingelesen, sodass ich mit "strlen" die Stellen auslesen konnte. Aber dann bin ich daran gescheitert aus dem "char" ein "integer" zu machen.
Erstens: Wozu brauchst du ein "integer", wenn du am Ende jede Ziffer einzeln überprüfen willst? Da ist es doch besser, direkt auf dem char[] zu arbeiten.
Zweitens: Wenn es doch nötig ist, schau dir mal sscanf(), atoi() oder strtol() an.
-
DANKE für eure Hilfe.
Ich habe das Problem jetzt einfach gelöst, indem ich in dem Zahlencode nur noch die Zahlen [1, ..., 9] verwende.