#include <iostream>#include <string.h>#include <math.h>using namespace std;string rozmiar_znaku(string tekst);/* Prosta funkcja zmieniająca rozmiar znaku. W przypadku gdy uzytkownik wprowadzi 'a' funkcja zamini to na 'A' Wykorzystują różnicę między znakami dużymi a małymi (32) a=97, A=65, 97-65=32*/char dec2n(int liczba);/* Prosta funkcja oparta na switch'u zamieniająca cyfry na odpowiadajace im litery np: 11=B 13=D itd*/int n2dec(char liczba);/* Prosta funkcja oparta na switch'u zmieniająca znak typu A albo F na odpowiadającą mu cyfrę np: A=10, F=15 itd,*/int todec(string liczba, int podstawa);/* Funkcja zamieniająca liczbę z dowolnego systemu na system dziesiętny*/string ton(int liczba, int podstawa);/* Funkcja zamienia system dziesiętny na dowolnie inny*/int main(){ int in, out; string inn; cout << "Program zamienia dowolny system liczbowy na dowolnie inny.(od 2 do 35)\n"; cout << "Podaj podstawe systemu wejsciowego: "; cin >> in; if ((in<=1)||(in>=36)) { cout << "System liczbowy z poza zakresu.\n"; return 0; } cout << "Podja liczbe w systemie o podstawie " << in << ": "; cin >> inn; inn=rozmiar_znaku(inn); cout << "Podaj podstawe systemu wyjsciowego: "; cin >> out; if ((out<=1)||(out>=36)) { cout << "System liczbowy z poza zakresu.\n"; return 0; } cout << ton(todec(inn, in), out); cout << endl;}string ton(int liczba, int podstawa){ int ile=0; string temp, wynik; while(liczba>=1) { if (liczba%podstawa>0) { temp+=dec2n(liczba%podstawa); } else temp+='0'; liczba/=podstawa; ile++; } for (int i=ile-1; i>=0; i--) { wynik+=temp.at(i); } return wynik;}string rozmiar_znaku(string tekst){ for (unsigned int i=0U; i<tekst.length(); i++) { if ((tekst.at(i)>=97) && (tekst.at(i)<=122)) tekst.at(i)-=32; } return tekst;}int todec(string liczba, int podstawa){ int wynik=0; for (unsigned int i=0U; i<liczba.length(); i++) { wynik+=n2dec(liczba.at(i))*pow(podstawa,liczba.length()-1-i); } return wynik;}char dec2n(int liczba){ switch (liczba) { case 0: return '0'; break; case 1: return '1'; break; case 2: return '2'; break; case 3: return '3'; break; case 4: return '4'; break; case 5: return '5'; break; case 6: return '6'; break; case 7: return '7'; break; case 8: return '8'; break; case 9: return '9'; break; case 10: return 'A'; break; case 11: return 'B'; break; case 12: return 'C'; break; case 13: return 'D'; break; case 14: return 'E'; break; case 15: return 'F'; break; case 16: return 'G'; break; case 17: return 'H'; break; case 18: return 'I'; break; case 19: return 'J'; break; case 20: return 'K'; break; case 21: return 'L'; break; case 22: return 'M'; break; case 23: return 'N'; break; case 24: return 'O'; break; case 25: return 'P'; break; case 26: return 'Q'; break; case 27: return 'R'; break; case 28: return 'S'; break; case 29: return 'T'; break; case 30: return 'U'; break; case 31: return 'V'; break; case 32: return 'W'; break; case 33: return 'X'; break; case 34: return 'Y'; break; case 35: return 'Z'; break; default: return '.'; break; }}int n2dec (char liczba){ switch (liczba) { case '0': return 0; break; case '1': return 1; break; case '2': return 2; break; case '3': return 3; break; case '4': return 4; break; case '5': return 5; break; case '6': return 6; break; case '7': return 7; break; case '8': return 8; break; case '9': return 9; break; case 'A': return 10; break; case 'B': return 11; break; case 'C': return 12; break; case 'D': return 13; break; case 'E': return 14; break; case 'F': return 15; break; case 'G': return 16; break; case 'H': return 17; break; case 'I': return 18; break; case 'J': return 19; break; case 'K': return 20; break; case 'L': return 21; break; case 'M': return 22; break; case 'N': return 23; break; case 'O': return 24; break; case 'P': return 25; break; case 'Q': return 26; break; case 'R': return 27; break; case 'S': return 28; break; case 'T': return 29; break; case 'U': return 30; break; case 'V': return 31; break; case 'W': return 32; break; case 'X': return 33; break; case 'Y': return 34; break; case 'Z': return 35; break; default: return 69; break; }}