Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: C: kokonaisluvusta merkkijonoksi

Mazuli [09.11.2005 14:59:55]

#

Juu eli väsäsin tälläisen funktion joka muuttaa kokonaisluvun merkkijonoksi, kun otti päähän kun en valmista löytänyt.
Koodi käyttää c++ ainoastaan string luokan osalta, koska en osannut oikein palautaa lukua muuten. Eli vinkkiä voi antaa miten se onnistuu c:llä :). Koodia ei ole mitenkää optimoitu ja jokin helpompi tapa tähänkin varmaan on. Kommentointi on vähän epäselvää, mutta parempaan en pystynyt :/.

/* funktio muutta kokonaisluvun n merkkijonoksi */
string int_to_string(int n)
{
    char numerot[11] = "0123456789"; // numerot merkkeinä

    int pituus   = 1;   //luvun pituus merkkeinä
    int potenssi = 1;   //suurin 10 potenssi joka on pinempi tai yhtäsuuri kuin annettu luku

    /* kasvatetaan pituutta ja potenssia niin kauan kun potessi < tai == kuin luku */
    while(potenssi * 10 <= n){ pituus++; potenssi *= 10; }

    string str;     //merkkijono joka palautetaan
    int    i;       //for silmukkaan
    int    num;     //luvun numero

    /* käydään luku läpi */
    for(i = 0; i < pituus; i++)
    {
        num       = (int)(n / potenssi);    //kuinka monta kertaa potenssi menee lukuun
        n        -= (int)(num * potenssi);  //"lyhennetään" lukua
        potenssi /= 10;                     //pienennetään potenssia

        str.insert(str.begin() + i, numerot[num]);  //lisätään merkkijonoon oikea numero
    }

    return str; //palautetaan merkkijono
}

T.M. [02.12.2005 10:50:33]

#

itoa() tai sprintf() hoitaa homman myös...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta