auf eine bestimmte Zahl kommen
-
Ich glaube, so langsam kann ich deinen Gedankengang verstehen - du schreibst die Zahl im (modifizierten) Neuner-System und interpretierst die Ausgabe dann als Dezimalzahl.
-
Die Frage ist, ob ueberhaupt noch (vom Programm) interpretiert wird, schliesslisch werden Ausgaben eigentlich vom Anwender interpretiert. Und da muss man normalerweise nichts Spezielles tun, damit eine Zahl als "Zahl im Zehnersystem" verstanden wird. f'`8k
Gruß, TGGC (making great games since 1992)
-
im Prinzip eine Konvertierung wie itoa nur mit einer Menge von 9 zeichen und zur basis 9.
PS: Ich glaube TGGC ist nur zufällig auf die Lösung gekommen, weil das Beispiel mit 9 war. Das das auch für alle anderen Zahlen geht, war ihm doch zuerst garnicht bewusst, sondern nur glück.
-
Bei itoa kann man die Basis als Parameter uebergeben. Darum brauch man kein itoaN fuer jede verschiedene Basis schreiben. f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
-
Ja, die Basis schon, aber nicht welchen "Zeichensatz" er nehmen soll. Man könnte den Zeichenstaz für die Ausgabe umstellen, aber da wäre es glaub ich einfacher sein ito9a zu schreiben und z.B den "023456789" Zeichensatz zu übergeben.
-
Wieso dann nicht eine allgemeine Funktion mit Basis == Laenge des "Zeichensatzes"? f'`8k
Gruß, TGGC (making great games since 1992)
-
Weil dann mein Name nicht mehr passt.
-
TGGC schrieb:
Die Frage ist, ob ueberhaupt noch (vom Programm) interpretiert wird, schliesslisch werden Ausgaben eigentlich vom Anwender interpretiert. Und da muss man normalerweise nichts Spezielles tun, damit eine Zahl als "Zahl im Zehnersystem" verstanden wird. f'`8k
Ist doch egal, wer die Zahl interpretiert - wenn du es nur ausgeben willst, reicht die Umwandlung und Ausgabe aus, wenn du damit noch rechnen willst, mußt du sie (dezimal) zurückwandeln.
PS: Für beliebige Ziffern kannst du ja die itoa mit einem anschließenden Zeichen-Mapping kombinieren:
void remap_number(char* num,char* mapping) { for(int i=0;i<strlen(num);++i) if(isdigit(num[i]) num[i] = mapping[num[i]-'0']; } char ausgabe[MAX]; itoa(number,ausgabe,9) remap_number(ausgabe,"012456789x");//wir suchen alle Zahlen ohne '3'
PPS: itoa() ist aber keine Funktion des Ansi-Standards.