Napisz program, który wczyta ze standardowego wejścia ciąg liczb zapisanych w systemach dziesiętnym, ósemkowym (z wiodącym "0") lub szesnastkowym (wiodące '0x'). Dla każdej wczytanej liczby program powinien wydrukować ją we wszystkich trzech możliwych reprezentacjach w porządku: ósemkowa, dziesiętna, szesnastkowa.
Przykładowe wejście:
012
0xCC
37
Przykładowe wyjście:
012 10 0xA
0314 204 0xCC
045 37 0x25
Udalo mi się wykombinować coś takiego (coś nie tak jest z typami danych w funkcjach):
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int hex2dec (string heksadecymalna)
{
int dziesietna = strtol(heksadecymalna.c_str(), NULL, 16);
return dziesietna;
}
string dec2hex (int dziesietna)
{
char heksadecymalna[255];
itoa(dziesietna, heksadecymalna, 16);
return (string)heksadecymalna;
}
int oct2dec (string osemkowa)
{
int dziesietna = strtol(osemkowa.c_str(), NULL, 8);
return dziesietna;
}
int dec2oct (int dziesietna)
{
char osemkowa[255];
itoa(dziesietna, osemkowa, 8);
return (int)osemkowa;
}
int oct2hex (int osemkowa)
{
int osemkowa = strtol(osemkowa.c_str(), NULL, 16);
return osemkowa;
}
string hex2oct (string heksad)
{
int heksad = strtol(heksad.c_str(), NULL, 8);
return heksad;
}
int main()
{
int liczba;
string liczba8;
string liczbahex;
cin >> liczba8 ;
cin >> liczbahex;
cin >> liczba;
cout << liczba8 << " ";
cout << oct2dec(liczba8) << " ";
cout << oct2hex(liczba8) << endl;
cout << hex2oct(liczbahex) << " ";
cout << hex2dec(liczbahex) << " ";
cout << liczbahex << endl;
cout << dec2oct(liczba) << " ";
cout << liczba << " ";
cout << dec2hex(liczba) << endl;
return 0;
}