#include "library.h" const string digs = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string convert_to(int Base, int N) { if (N >= Base) return convert_to(Base, N / Base) + digs[N % Base]; return string("") + digs[N % Base]; } int find_pos(char c, string s, int curr_pos) { if (curr_pos >= s.length()) { print("Bad digit '"); print(c); print("'\n"); return -1; } if (s[curr_pos] == c) return curr_pos; return find_pos(c, s, curr_pos + 1); } int find_pos(char c, string s) { return find_pos(c, s, 0); } int convert_from(int Base, string Num, int curr_pos, int curr_power) { const int this_digit = find_pos(Num[curr_pos], digs); const int addition = this_digit * curr_power; if (curr_pos == 0) return addition; return convert_from(Base, Num, curr_pos - 1, curr_power * Base) + addition; } int convert_from(int Base, string Num) { return convert_from(Base, Num, Num.length() - 1, 1); } void test() { print("N from_base to_base? "); const string num = read_string(); const int from = read_int(); const int to = read_int(); const int value = convert_from(from, num); const string result = convert_to(to, value); print(num); print(" base "); print(from); print(" is "); print(result); print(" base "); print(to); new_line(); test(); } void main() { test(); }