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