ある人の宿題、Aファイルの第5題
タイトル:
参照
五、進数変換器(10)
要求:(1)バイナリ、8進数、10進数、16進数を入力できます.
(2)入力した数を残りの進数に変換する.
(3)入出力インタフェースを有する.
簡単な回答:
今度はもっと怠け者・・・いっそチェックしない=-
参照
五、進数変換器(10)
要求:(1)バイナリ、8進数、10進数、16進数を入力できます.
(2)入力した数を残りの進数に変換する.
(3)入出力インタフェースを有する.
簡単な回答:
#include <cstdlib>
#include <iostream>
using namespace std;
string toBinaryString(int num) {
char buffer[33];
memset(buffer, 0, 33);
itoa(num, buffer, 2);
string result(buffer);
return result;
}
int fromBinaryString(string& in) {
int length = in.length();
int result = 0;
for (int i = 0; i < length; ++i)
if ('1' == in[i])
result |= 1 << (length - i - 1);
return result;
}
void printNumber(int num) {
cout << "binary: " << toBinaryString(num) << endl;
cout << "octal: " << oct << num << endl;
cout << "decimal: " << dec << num << endl;
cout << "hexadecimal: " << hex << num << dec << endl;
}
void promptRadix() {
cout << "Enter a decimal number as radix (2, 8, 10, 16): ";
}
void promptNumber() {
cout << "Enter a number in the above radix: ";
}
int main () {
string input;
int radix;
int num;
promptRadix();
getline(cin, input);
radix = atoi(input.c_str());
switch (radix) {
case 2:
promptNumber();
getline(cin, input);
num = fromBinaryString(input);
printNumber(num);
break;
case 8:
promptNumber();
cin >> oct >> num;
printNumber(num);
break;
case 10:
promptNumber();
cin >> dec >> num;
printNumber(num);
break;
case 16:
promptNumber();
cin >> hex >> num;
printNumber(num);
break;
default:
cout << "invalid radix." << endl;
break;
}
return 0;
}
今度はもっと怠け者・・・いっそチェックしない=-