10진수를 입력 받아서 2, 8, 16진수로 바꾸어 출력하는 프로그램을 작성하시오.
입력의 첫줄에는 10진수 N(1≤N≤100,000)과 바꿀 진수 B(2, 8, 16)가 공백으로 구분하여 입력된다.
16진수에서 10이상의 수는 순서대로 'A', 'B', 'C', 'D', 'E', 'F'로 나타낸다.
입력받은 10진수를 B진수로 바꾸어 출력한다.
27 2 | 11011 |
실력키우기 수학문제에 들어서 가장 쉬운 것 같은 문제인데요, 8진수, 16진수는 C++에서 공식적으로 지원되기 때문에 지난번에 만든 2진수로 출력하는 함수만 가져오면 해결이 가능한 문제입니다.
저 같은 경우에는 8, 16진수 변환이 지원되는 것은 알고 있었는데 C++에서 어떤 식으로 사용하는지는 몰랐었는데 이번 기회에 알게 됐네요.
8: oct, 16: hex, 추가적으로 대문자 출력 uppercase, 소문자 출력 nouppercase
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <iostream> using namespace std; enum OPTION { BIN = 2, OCT = 8, HEX = 16 }; void N2B(int n); int main(void) { int n; // 10진수 입력 받을 변수 int op; // 2, 8, 16진수에 대해 선택을 받을 변수 cin >> n >> op; switch (op) { case BIN: // 2진수 출력은 공식적으로 지원해 주는 게 없으니 지난번에 // 만들었던 함수를 이용한다. N2B(n); cout << endl; break; case OCT: // 8진수 출력 cout << oct << n << endl; break; case HEX: // 16진수 대문자로 출력 cout << uppercase << hex << n << endl; break; } } // 10진수를 2진수로 변환하는 함수 void N2B(int n) { if (n == 0) return; N2B(n / 2); cout << n % 2; } | cs |
JUNGOL) 문제은행) 실력키우기) 10진수를 2 8 16진수로