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;
    34

    aber

    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ß


Anmelden zum Antworten