void BaseOut(unsigned int n, int b);
that outputs n in the base b, 2 <= b <= 10. Print each number in the range 2<=n<=50 in base 2, 4, 5, 8 and 9.
#include <iostream>
using std::cout;
using std::endl;
void BaseOut(unsigned int n, int b)
{
int a[64]; // 64 may not be enough if n is bigger.
// Check the range of b.
if (b > 10 || b < 2)
{
cout << "Error: base out of range - " << b << endl;
return;
}
cout << n << " in the base " << b << ":";
// Calculate and store the result in a[].
size_t i;
for (i = 0; n > 0; i++)
{
if (sizeof(a) <= i)
{
cout << "Error: " << n << " is too big" << endl;
return;
}
a[i] = n % b;
n /= b;
}
// Output the result.
for (size_t j = 1; j <= i; j++)
{
cout << a[i-j];
}
cout << endl;
}
int main()
{
for (size_t i = 2; i <=50; i++)
{
BaseOut(i, 2); // i in the base 2
BaseOut(i, 4); // i in the base 4
BaseOut(i, 5); // i in the base 5
BaseOut(i, 8); // i in the base 8
BaseOut(i, 9); // i in the base 9
cout << endl;
}
return 0;
}
No comments:
Post a Comment