int zusammenführen
-
nehmen wir mal 344 als beispiel
#include .... void Pilles_moduloschleife { char[10] //duerfte reichen int zahl1 = 344; int i = 0; while(zahl1) { char[i] = zahl1 % 10; // 344 % 10 ist 4 also von hintan nach vorn im char feld i++; zahl1 /= 10; } }
schon fertig
also ja die modulo schleif ist um die einzelnen ziffern zu bekommen.
Viel spass damit und achtung du hast die Ziffern zum schluss falsch rum im charfeld stehen
344 und 256 ---> charfeld [ 4 , 4, 3, 6, 5 ,2]
Bis denne
Pilger
-
haeger12 schrieb:
Beispiel
int werta = 2;
int wertb = 4;dann soll int wert_neu = 24; sein
Hallo Häger,
nutze die STL; z.B. std::stringstream
#include <iostream> #include <sstream> int main() { using namespace std; int werta = 12; int wertb = 4; int wert_neu; stringstream buf; buf << werta << wertb; buf >> wert_neu; cout << "wert_neu = " << wert_neu << endl; return 0; }
Gruß
Werner
-
damit hast du dann auch gleich den unterschied zwischen Ansi C und
C++.Hab da noch son paar C-Relikte im Kopf
-
du kannst die zahl die zuerst stehen soll einfach mit der entsprechenden n*10 multiplizieren und dann einfach die zweite zahl addieren....
warum macht ihr das so kompliziert?
-
Kompliziert is immer besser
-
Kuldren schrieb:
du kannst die zahl die zuerst stehen soll einfach mit der entsprechenden n*10 multiplizieren und dann einfach die zweite zahl addieren....
warum macht ihr das so kompliziert?vielleicht verstehe ich dich nciht, aber dann wäre:
int a=3;
int b=4;
34aber
int a=30;
int b=40;
340 und nicht 3040!
-
nei er meint n = anzahl zifern
256 34 sind 5 zifern
Ergebnis gleich
2 * 10^5 + 5*10^4 etc.
guter Einwand
manchmal denkt man halt bissl verquer
-
Pilger81 schrieb:
nei er meint n = anzahl zifern
256 34 sind 5 zifern
Ergebnis gleich
2 * 10^5 + 5*10^4 etc.
guter Einwand
manchmal denkt man halt bissl verquer
ok, also doch nen kleiner denkfehler meinerseits...
-
Kuldren schrieb:
du kannst die zahl die zuerst stehen soll einfach mit der entsprechenden n*10 multiplizieren und dann einfach die zweite zahl addieren....
warum macht ihr das so kompliziert?Erstens meinst Du wahrscheinlich 10^n und
zweitens liegt das Problem dann in der Berechnung von 'n'.
Vorschlag:#include <iostream> #include <sstream> #include <cmath> int pow( int x, int y ) // pow mit int's { // if (y<0) Fehler switch( y ) { case 0: return 1; case 1: return x; default: return x * pow( x, y-1 ); } } int main() { using namespace std; int werta = 123; int wertb = 4; int wert_neu; wert_neu = pow( 10, int(floor(log10( double(wertb) ))) + 1 ) * werta + wertb; cout << "wert_neu = " << wert_neu << endl; return 0; }
.. ist aber auch nicht einfacher als mit std::stringstream
Gruß
Werner
-
WTF?
int append(int a, int b) { int cpy = b; do { a *= 10; cpy /= 10; } while(cpy > 0); return a + b; }
Sollte stimmen wenn mich net alles täuscht.
Gruß