Podczas rozwiązywania różnych zadań informatycznych może pojawić się potrzeba zapisania liczby wspak. W tym artykule zostało omówione kilka sposobów realizacji tego zadania w zależności od treści zadania. Ponadto zostały dodane opisy, które podpowiadają zaletę lub wadę danej metody.
Jest to najpopularniejsza metoda, która polega na usuwaniu kolejnych cyfr z końca i dopisywania ich do zmiennej wynikowej z prawej strony. Taki kod składa się z jednej pętli i wymaga zastosowania dwóch zmiennych. Oto przykładowy kod, który realizuje funkcję wspak():
Funkcja składa się z jednej pętli, gdzie kolejno liczby są przesuwane w lewo o jedną pozycję poprzez mnożenie przez 10, a następnie dodawana jest kolejna cyfra, która później musi być usunięta z liczby wejściowej. Po usunięciu wszystkich cyfr zostanie tylko 0, a więc pętla jest skończona.
Do zapisywania liczby wspak można też skorzystać z stosu, który w swojej naturze wszystko co zostanie położone, a następnie zdjęte jest w kolejności odwrotnej. Można to wykorzystać kładąc na stosie kolejn odczytane cyfry z liczby, a następnie odczytaniu ich i ustawieniu w liczbie wynikowej. Oto kod realizujący podany algorytm:
Tym razem potrzebne są dwie pętle. Pierwsza z nich wrzuca wszystko na stos, a druga zdejmuje te cyfry do stosu i dodaje do wyniku. W tym przypadku należy pamiętać, że dodawą liczbę należy pomnożyć przez kolejne potęgi liczby 10, aby cyfra znalazła się na właściwym miejscu.
Innym sposobem na odwrócenie liczby wspak jest konwersja jej na tekst, który można odwrócić (zazwyczaj języki programowania mają gotowe do tego funkcje jak również konwersji liczby na tekst i odwrotnie). W tym jednak kryje się problem wydajności. Konwersja liczby na tekst i odwrotnie wymaga bardzo dużo obliczeń. Także tego algorytmu najlepiej nie używać, aby oparty o niego program nie działał bardzo wolno. Należy jednak przyznać, że kod wygląda bardzo "elegancko":
Wniosek płynie taki, że jedno polecenie można rozwiązać wieloma różnymi algorytmami, ale zawsze należy się zastanowić czy wybrany algorytm jest odpowiedni do pisanego programu.
Wszystkie powyższe algorytmy tworzące liczbę wspak można przetestować przy pomocy poniższego kodu:
Przedstawione algorytmy działają poprawnie tylko dla liczb naturalnych. Napisz wersję funkcji wspak(), która będzie potrafiła zamieniać również liczby ujemne. Przykładowo dla -123 wynikiem powinno być -321.