Ein array in eine zahl umwandeln?



  • Hallo,

    ich versuche verzweifelt ein int array in ein int zahl umzwandeln!
    kann mir da jemand helfen?
    Danke im voraus!

    Gruss neomay



  • du meinst in ziffern oder was? beschreib mal etwas genauer was du vor hast



  • Falls die einzelnen Array Elemente die Ziffern einer Gesamtzahl darstellen soll ein Tipp:
    Die "Wertigkeit" eines Array-Elements erhältst du per a[i]*10^(L-i-1), wobei a ein int-Array, L die Länge von a und i der Index ist.



  • [code]
    result = 0;
    length = Länge des Arrays;

    // Man geht im wesentlichen das Array von hinten weg durch (-> length - i)
    // (natuerlich nur sofern das letzte Element den geringsten Stellenwert hat,
    // ansonsten ist es genau umgekehrt) und zaehlt im Wesentlichen die Ziffer
    // umgerechnet mit dem Stellenwert hinzu.
    for(i = 0; i < length; ++i)
    result = result + array[length - i] * radix ^ i;

    // array[length - i]:
    // nächste Ziffer von hinten weg

    // radix ^ i:
    // Stellenwert an der Position i, wobei radix die Basis des gewuenschten
    // Zahlensystems ist (z.B: 10 im dekadischen oder 2 im binären System)

    // array[length - i] * radix ^ i:
    // Ergibt den Wert der Ziffer an ihrer Stelle. Konkretes Beispiel: 24
    // die Ziffer 2 ist an der Stelle 1 (von rechts weg gezählt) und hat
    // somit einen Wert von 2 * 10^1 : 20 -> stimmt!

    // result + array[length - i] * radix ^ i:
    // Es werden nun einfach iterativ alle Werte aufgezaehlt, bei 24 waere
    // das eben 20 + 4 .. was korrekterweise 24 ergibt.
    [code]



  • Danke für die schnellen Antworten!
    @öfgjsöfdlgöasdlfüpeksgsdf die for schleife muss aber andersrum durchlaufen

    for (int i=(length-1); i>=0; i--)  
    result = result + zahl[i]*pow(10,i);
    

    (fals einer das gleiche Problem hat)

    Danke an alle!
    Gruss NeoMay



  • NeoMay schrieb:

    Danke für die schnellen Antworten!
    @öfgjsöfdlgöasdlfüpeksgsdf die for schleife muss aber andersrum durchlaufen

    for (int i=(length-1); i>=0; i--)  
    result = result + zahl[i]*pow(10,i);
    

    (fals einer das gleiche Problem hat)

    Danke an alle!
    Gruss NeoMay

    Benutz lieber das Hornerschema:

    for (int i=(length-1); i>=0; i--)  
    result = result * 10 + zahl[i];
    

    Wenn Σzahl[i]*10^i gewuenscht,
    ansonsten Schleife in anderer Richtung durchlaufen.


Anmelden zum Antworten