C/C++ Int Werte zusammen fügen



  • Hi
    Bei meinen Program habe ich ein int array, was folgende Werte hat.
    int out [15]={2,3,6,5,7,8};
    Jetzt möchte ich ein Array daraus zusammenfügen, welches immer jeweils 3 Ziffern von diesen Zusammenfügt, also:
    int end1 [8]={236,578};
    Hat jemand eine Idee, wie das Klappen könnte:
    Mein Versuch:

    int c=0;
        int end1 [26][3];
        char end[26][2];
    for (int i=0;i<15;i+=3){
    sprintf(end[c][i],"%d%d%d",out[i],out[i+1],out[i+2]);
    c++;
    end1[c]=atoi(end[c][i]);
    cout << " " << end1[c];
    } 
    cout << " " << out1[i][c];
     }
    

    Hat jemand ne Idee.


  • Administrator

    Wenn die Ziffern vom Array out immer im Bereich 0 bis 9 liegen, dann geht das ja relativ einfach. Nur so schnell hingeschmiert:

    for(int i = 0; i < OUT_LENGTH; i += 3)
    {
      int var = out[i] * 100 + out[i] * 10 + out[i];
      // var irgendwo speichern ...
    }
    

    Grüssli



  • int Stellen = 0;
    int Zahl = 0;
    
    Stellen += x[2] / 10 + 1;
    Zahl += x[2] * Stellen;
    Stellen += x[1] / 10 + 1;
    Zahl += x[1] * Stellen;
    Stellen += x[0] / 10 + 1;
    Zahl += x[0] * Stellen;
    


  • Die Ziffern im Array liegen leider nicht immer im Bereich von 0-10. In wircklichkeit sind das Acii Werte.
    Ich möchte nämlich ein Programm schreiben, dass einen Text cryptet. Dafür möchte ich, dass ich die Ascii Werte von jeweils 3 Ziffern zussammengefügt werden.
    BSP:
    05 18 65 55 66 77

    in Blöcke geteilt :
    051865 556677.



  • Aber Danke, dass müsste ja dann im Prinzip so gehn:
    int var = out[i] * 10000 + out[i] * 100 + out[i];


  • Mod

    Ungetestet, aber so sollte das vom Prinzip her fuer drei beliebige nicht-negative Zahlen gehen:

    stringstream puffer;
    puffer << zahl1 << zahl2 << zahl3;
    int ergebnis;
    puffer>>ergebnis;
    

    Idee dabei: Beim Schreiben landen die drei Zahlen nacheinander ohne Leerzeichen im Puffer. Beim Lesen sollte der Parser daher einen einzigen grossen int erkennen.

    edit: Getestet, es geht!


Anmelden zum Antworten