zahlenreihenfolge umkehren
-
hi,
ich möchte ein programm schreiben, bei dem man ne zahl eingibt (zb 456), das diese zahl dann als wort ausgibt. also "vier fünf sechs". um die ziffern zu "trennen" verwende ich den modulo-operator %, um den rest von 456/10 zu bekommen, also als erstes also 6.
und da liegt das problem: nach dem trennen der ziffern sind sie in umgekehrer reihenfolge, also 6;5;4. wie kann ich das wieder umdrehen?
ant
-
Pack sie erst alle auf einen Stack und gib sie dann von oben herab aus.
-
Alternativ kannst du eine rekursive Funktion benutzen:
const char * const digits[] = { "eins", "zwei", ... }; void print_digit(int zahl) { if(zahl >= 10) print_digit(zahl / 10); cout << digits[zahl % 10] < ' '; }
-
Schmeiß die Zahl einfach per Stringstream in einen String und lass dir die Ziffern "vorlesen"
int zahl; std::stringstream sstr; sstr << zahl; std::string zahlstr = sstr.str(); for (size_t i = 0; i<zahlstr.length(); ++i) { switch (zahlstr[i]) { case 1: std::cout << "eins"; break; case 2: std::cout << "zwei"; break; /* usw. */ } }Wenn du das Ganze aus welchem grund auch immer trotzdem umdrehen möchtest - der string hat reverse_iteratoren

-
MÖÖÖP. Ehm es besteht ein Unterscheid zwischen '1' und 1

int number(0); std::ostringstream ss; ss << zahl; const std::string str_number(ss.str()); for (std::size_t i(0); i < str_number.length(); ++i) { switch (str_number[i]) { case '1': std::cout << "eins"; break; case '2': std::cout << "zwei"; break; /* usw. */ } }^^ wobei das unelegant ist ...
-
@(D)Evil: Und wo sind bei dir die Anführungsstriche?
...and switches are code bloat (instead use my array version).
-
@Th: Mist ^^ Da mecker ich und vergesse es aus Hektik ... nja sorry.