#include #include using namespace std; char ZapisCifre( int c ) { char* cifre = "0123456789ABCDEF"; return cifre[c]; } // Broj 1123123 prevodimo tako sto ga delimo u // grupe od po dva elementa, pocevsi sa desne strane // dakle 23, 31, 12 i 1 // svakoj grupi dodeljujemo odgovarajucu cifru u osnovi // 16 i dobijamo broj 16DB. // 23 = 3 + 2*4 = 11 = B // 31 = 1 + 3*4 = 13 = D // 12 = 2 + 1*4 = 6 = 6 // 1 = 1 // Treba voditi racuna da li imamo paran ili neparan broj cifara string Konverzija4u16(const string& s) { unsigned grupa = 0; string rezultat; for(unsigned i=s.length(); i>1; i-=2) { grupa = (s[i-1] - '0') + (s[i-2] - '0')*4; rezultat = ZapisCifre(grupa) + rezultat; } if(s.length() % 2) { grupa = s[0] - '0'; rezultat = ZapisCifre(grupa) + rezultat; } return rezultat; } int main() { string s; cout << "Unesi broj u osnovi 4:" << endl; cin >> s; cout << "Broj u osnovi 16 je: "<< Konverzija4u16(s) << endl;; return 0; }