Odpowiedź :
Odpowiedź:
#include <iostream>
#include <string>
using namespace std;
string value(int value)
{
if (value < 10) {
return to_string(value);
}
switch(value) {
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;
}
}
bool isCorrect(int base)
{
if (base == 2 || base == 8 || base == 16) {
return true;
}
return false;
}
string convert(int n, int base)
{
string out;
for(int i=0; n>0; i++) {
out +=value(n%base);
n = n/base;
}
n = out.length();
for (int i = 0; i < n / 2; i++)
swap(out[i], out[n - i - 1]);
return out;
}
int main() {
int value;
int base;
bool baseIsCorrect = false;
cout<<"Podaj liczbę w systemie dziesiętnym:";
cin>>value;
do {
cout<<"Podaj system wyjściowy [2,8,16]:";
cin>>base;
baseIsCorrect = isCorrect(base);
if(!baseIsCorrect) {
cout<<"Błędnie podałeś system wyjściowy"<<endl;
}
} while (!baseIsCorrect);
cout<<convert(value, base);
return 0;
}
Wyjaśnienie: