Gast
#3149029
Hey, ich wollte fragen, wie man in c eine zahl überprüfen kann, ob sie ein bestimmtes zeichen enthält: Zum Beispiel ob in der Zahl 134 die zahl 3 ist. Hat jemand eine Idee? Danke schonmal
|
Anzeige
|
Zahl überprüfen
Gast
#3149029
Hey, ich wollte fragen, wie man in c eine zahl überprüfen kann, ob sie ein bestimmtes zeichen enthält: Zum Beispiel ob in der Zahl 134 die zahl 3 ist. Hat jemand eine Idee? Danke schonmal
Gast
#3149031
Pat schrieb: > Hat jemand eine Idee? in text (char*) umwandeln und dann darin suchen? Die relevanten Bits sich raussuchen und überprüfen?
Gast
#3149035
Google mal nach strchr und itoa oder sprintf. Das löst Dein Problem. Du musst die "134" erst als string vorliegen haben und kannst dann mit strchr einzelne Zeichen abfragen. Grüsse, R.
Gast
#3149042
Pat schrieb: > Hey, > ich wollte fragen, wie man in c eine zahl überprüfen kann, ob sie ein > bestimmtes zeichen enthält: > Zum Beispiel ob in der Zahl 134 die zahl 3 ist. > Hat jemand eine Idee? > Danke schonmal Oder die Stringmethoden komplett vergessen und die zu überprüfende Zahl in ein Array einzelner Ziffern zerlegen. Dann auf herkömmliche Weise das Array überprüfen. Oder auch das Array vergessen und die Überprüfung während des Zerlegens 'on the fly' machen.
Gast
#3149043
Norbert schrieb: > Oder die Stringmethoden komplett vergessen und die zu überprüfende Zahl > in ein Array einzelner Ziffern zerlegen. was zum Schluss das gleiche wie ein String ist. Nur mit einem Offset. Norbert schrieb: > Oder die Stringmethoden komplett vergessen und die zu überprüfende Zahl > in ein Array einzelner Ziffern zerlegen. Also genau das, was itoa macht. > Dann auf herkömmliche Weise das Array überprüfen. Also genau das, was strchr macht. Wo ist jetzt der Vorteil, das selbst zu machen? > Oder auch das Array vergessen und die Überprüfung während des Zerlegens > 'on the fly' machen. So könnte man sich dann immerhin mal den Speicher für das Array sparen, was aber auf dem PC nun wirklich keine Rolle spielt.
Gast
#3149061
@Peter @Rolf Magnus Das sollte eigentlich eine sanfte Hinführung auf die zuletzt genannte Methode sein um zu verstehen wie man so eine Aufgabe lösen kann. Kam wohl nicht so rüber. Mein Fehler ;-) Im Übrigen würde aber itoa noch eine Translation zB. von Dez 1 auf Hex 31, Dez 2 auf Hex 32, usw. machen. (int to char) Der Vorteil wäre ua., das man den Suchvorgang abbrechen könnte sobald eine Ziffer gefunden würde.
Gast
#3149088
Hallo Norbert Um zu verstehen (vor allem etwas Speicherdenken zu verstehen, was mitunter heutzutage untergeht) ist Dein Ansatz meiner Meinung nach richtig. Wie ich itoa oder ähnliches nicht gekannt hatte, ging ich diesen Umweg. Aber ich denke, dass der/die TO nicht diesen Weg suchte. Wenn aber doch, ist es ein guter Hinweis gewesen. Grüsse, R.
Gast
#3149134
Norbert schrieb: > Oder auch das Array vergessen und die Überprüfung während des Zerlegens > 'on the fly' machen. Wenn keine Fehler drinnen sind, dann z.B. so: Prüfe aber nur ob eine bestimmte Ziffer vorhanden ist. Auf eine Zahl prüfen würde ähnlich gehen.
Gast
#3149137
Die String-Methoden vergessen und das Problem arithmetisch lösen scheint am einfachsten, wenn die Zahl als Integer vorliegt oder Konvertieren. Also in einer Schleife wiederholt durch 10 teilen und jeweils den Rest prüfen ob er 3 ergibt. Dann einfach abbrechen oder durchzählen wie oft die 3 vorkommt, ist das grösser als Null kommt die 3 vor.
Gast
#3149150
Willst Du eine echte, dezimale Drei erkennen, so musst Du die Zahl auch als echte ASCII-Dezimalzahl vorliegen haben. In den meisten Fällen sind hierbei die "eingebauten" Funktionen am schnellsten und kompaktesten. z.B. itoa() und strchr(). Ganz anders sieht es aus, wenn Du Zahlen suchst, in die die Drei hineinpasst. Also 6, 9 oder 111.
Gast
#3149159
Wie liegt denn die Zahl vor? - Int: 12345 - Float: 12.34 - String: "12345" Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|