Odwrócenie liczby

0

Chodzi o funkcję, która odwróci kolejność cyfr liczby całkowitej dodatniej, np. 123 -> 321
Moja implementacja:

unsigned int invert (unsigned int value)
{
    unsigned int inverted = 0;
    while (value>0)
    {
        inverted = inverted*10 + value%10;
        value = value/10;
    }
    return inverted;
}

Coś tu warto poprawić?

edit: znalazłem szczególny przypadek, np dla liczby 0123 funkcja się sypie, jak można temu zaradzić?

0

A jakby: toString, teraz postawić warunek: nie od zera please, odwrócić Stringa i toInt?

0

Kod wtedy może i ładniej wygląda, ale nadal nie działa z zerami:

int odwroc (int n)
{
    std::string str = std::to_string(n);
    std::reverse(str.begin(), str.end());
    return std::atoi(str.c_str());
}

dla 0123 wynik 38
dla 1230 wynik 321 //no powiedzmy, że tu jest ok

0

Przecież Musisz wcześniej przeiterować string, żeby odrzucić początkowe zera, a pozostały substring odwrócic i zmienić na inta. Wszystkie metody, i iteratory do tego są w klasie string.

0

Jeżeli przekazujesz liczbę jako int, to skąd wiesz że było jakiekolwiek wiodące zero?

0

U mnie: int a = 022;, na przykład, się kompiluje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1