Umwandlung von Ziffern in Zahl



  • Kann man bzw. wie kann man denn die Ziffern einer sehr langen Zahl die in einem Array gespeichert sind in eine Zahl umwandeln?
    Bei geringer Anzahl der Elemente ist es mir klar, aber wenn es zu viele Elemente werden, muss man das ja dann irgendwie mit einer Schleife machen oder? Aber wie denn??

    Bin bis jetzt so weit:

    for(k=0;k<=N;k++)
    b[k]=(a[0+k]-'0')*10^(N-k);

    Dann müsste ich noch irgendwie die Summe der b[k] von k=0,..,N bilden. Wie geht das?

    Oder bin ich mit diesem Ansatz total auf dem Holzweg?



  • char str[MAX] = "";
    int i = 0;
    int zahl = 0;

    while(str[i]!='\0'){ // läuft bis terminierungszeichen vom Feld
    zahl = str[i]-'0'+(zahl*10);
    ++i;
    }



  • Hanna schrieb:

    Kann man bzw. wie kann man denn die Ziffern einer sehr langen Zahl die in einem Array gespeichert sind in eine Zahl umwandeln?
    Bei geringer Anzahl der Elemente ist es mir klar, aber wenn es zu viele Elemente werden, muss man das ja dann irgendwie mit einer Schleife machen oder? Aber wie denn??

    Bin bis jetzt so weit:

    for(k=0;k<=N;k++)
    b[k]=(a[0+k]-'0')*10^(N-k);

    Welche Typen haben die Variablen? Soll b wieder ein String werden? Warum addierst Du nicht gleich? Der ^-Operator macht übrigens nicht das, was Du willst.

    Dann müsste ich noch irgendwie die Summe der b[k] von k=0,..,N bilden. Wie geht das?

    »unsigned sum = 0, i; for (i = 0; i < SIZE_B; ++i) sum += b[i];«

    (Wenn das keine Übungsaufgabe war und es dir nicht sonderlich auf Geschwindigkeit oder Programmgröße ankommt, dann ist die Hilfe zu 'sscanf' vielleicht einen Blick wert.)



  • Daniel E. schrieb:

    Der ^-Operator macht übrigens nicht das, was Du willst.

    Welchen Operator gibt es denn dann für Potenzen??



  • Die Funktion pow...



  • Die Funktion pow(...) erlaubt es, Zahlen zu potenzieren. Schau in der Hilfe nach (<math.h> includen).
    MfG



  • Die einfachste Methode, wäre, auf die standard library zurückzugreifen:

    #include <stdio.h>
    
    /* ... */
    
    char zahlenstring[] = "12345";
    int zahl;
    sscanf(zahlenstring, "%d", &zahl);
    

Anmelden zum Antworten