Witam
W ramach dokształcania informatycznego, rozwiązuje sobie różne problemy i natrafiłem na jeden który nie daje mi spokoju. Moim zadaniem jest przekształcić liczbę zapisaną w dowolnej bazie do innej.
Potrafię sobie na kartce papieru bez problemu to napisać, nie wiem jednak czy jest to metoda dobra bo widzę parę problemów i nie wiem co z nimi zrobić.
Najpierw przykład. Ja np. mam alfabet "ABCDEFG..." i tak dalej. I teraz w nim mam zapisaną liczbę "DEAD" w powiedzmy systemie 9 to jest ona równa:
DEAD = (D * 90) + (A * 91) + (E * 92) + (D*93).
(Gdzie D = 3, A = 0, E = 4)
Otrzymam tym sposobem liczbę w formacie dziesiętnym i teraz przerobienie jej nie będzie stanowiło dla mnie większego problemu.
Problem jest jednak w tym że podstawa może być duża. Np. 60 i wtedy liczba którą otrzymam może być stanowcza za duża za zakres zmiennych w C/C++. I nie wiem co z tym zrobić.
Widzę parę rozwiązań nie wiem jednak które jest lepsze. Czy zamiast trzymać liczbę w formacie jakiegoś long int(który jest de facto mały, dla tego problemu) zrobić porostu tablicę np. char w której pod postacią ciągu znaków będę trzymał liczbę czy zamiast przerabiania do dziesiętnego systemu od razu zapisywać to w docelowym formacie? Wydaje mi się że wystarczyło by zamiast tej ( 9^n ) dać tam liczbę w odpowiednim formacie i zaimplementować odpowiednie dodawanie i mnożenie. Nie wiem jednak czy to wszystko jest dobre, i czy nie jest jakaś lepsza metoda na która nie mogę wpaść (ani znaleźć w internecie).
Przepraszam za wypracowanie, ale musiałem sobie jakoś to poukładać w głowie :)
Z góry dziękuje za wszystkie wskazówki :)