int zusammenführen
-
Moin, ich hab da mal ne Frage und zwar will ich bzw. muss ich zwei int Werte zusammenführen, also nicht addieren, sonder daraus der Zahlenfolge folgend einen neuen machen. Beispiel
int werta = 2;
int wertb = 4;dann soll int wert_neu = 24; sein, also quasi die Zahlen hintereinander geschrieben.
Wie bekommt man das hin, dass das dann auch ein int ist und nicht nen string oder so werden muss?
-
Also ich wuerde die beiden int werte in ein charfeld schreiben.
( mit einer %10 schleife nicht so ein problem)Dann die laenge der charfeldes bestimmen und wieder zurueck einen intwert
erzeugen24 und 58 in eine char feld temp[ 2, 4, 5, 8, '\0']
neuer intwert
2458
wenn das zu kurz war einfach bescheid sagen, bin halt von natur aus etwas schreibfaul
-
Man Multipliziere den 2. Wert mit 10, den 3. mit 100, den 4. mit 1000...
-
Okay, danke erstmal für die Lösung nur noch eine Frage, das %10 brauch ich dazu, das ich nur einzelne Zahlen habe, die in das Charfeld kommen ja? Da hapert es noch etwas beimir, wie ich das genau einbauen soll, wenn du da etwas detaillierter nochmal drauf eingehen könntest wäre es super. Danke
-
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ß