#include <iostream>
#include <stdio.h>
using namespace std;
bool isDigit(char c);
int digit2Int(char c);
bool isValid(int d2, int d1, int d0, int base);
int base10(int d2, int d1, int d0, int base);
int main()
{
char l,m,r,b;
int left,middle,right,base;
cout << "Please enter the leftmost digit" << endl;
cin >> l;
bool isDig1 = isDigit(l);
left = digit2Int(l);
cout << "Please enter the middle digit" << endl;
cin >> m;
bool isDig2 = isDigit(m);
middle = digit2Int(m);
cout << "Please enter the rightmost digit" << endl;
cin >> r;
bool isDig3 = isDigit(r);
right = digit2Int(r);
cout << "Please enter the number's base" << endl;
cin >> b;
bool isDig4 = isDigit(b);
base = digit2Int(b);
if(isDig1 == false)
cout << l << " is not a valid digit"<< endl;
else
cout << l << " is a valid digit"<< endl;
if(isDig2 == false)
cout << m << " is not a valid digit"<< endl;
else
cout << m << " is a valid digit"<< endl;
if(isDig3 == false)
cout << r << " is not a valid digit"<< endl;
else
cout << r << " is a valid digit"<< endl;
if(isDig4 == false || b==1)
cout << b << " is not a valid base"<< endl;
else
cout << r << " is a valid base"<< endl;
if(!isDig1 || !isDig2 || !isDig3 || (!isDig4 && b==1))
return 0;
bool isvalid = isValid(left ,middle ,right ,base);
if(isvalid == true)
{
cout << "The number" << left << middle << right << " is valid in base " << base << "." << endl;
int dec = base10(left ,middle ,right,base);
cout <<left << middle << right <<" (base " << base << ")= " << dec << "(base 10)" << endl;
}
else
cout << "The number" << l << m << r << "is not valid in base" << b << "." << endl;
return 0;
}
bool isDigit(char c)
{
int x = digit2Int(c);
if(x >=0 && x<=9)
return true;
return false;
}
int digit2Int(char c)
{
int x = c;
x = x - 48;
return x;
}
bool isValid(int d2, int d1, int d0, int base)
{
if((d2 < base) && (d1 < base) && (d0 < base))
return true;
return false;
}
int base10(int d2, int d1, int d0, int base)
{
int x = d2 * base * base + d1 * base + d0;
return x;
}