ในปัญหานี้ เราจะดูวิธีแปลงเลขฐานสิบเป็นเลขฐานสองโดยใช้ Stack เรารู้ว่าเลขฐานสิบสามารถแปลงเป็นฐานสองได้โดยการหารด้วย 2 และเก็บเศษ เราเอาเศษจากหลังสุดมาหน้าสุด ดังนั้นจึงใช้โครงสร้างข้อมูล Stack ได้อย่างง่ายดาย
Input: เลขฐานสิบ 13 Output: เลขฐานสอง 1101
อัลกอริทึม
ขั้นตอน 1: รับเลขฐานสิบ
ขั้นตอน 2: while เลขมากกว่า 0:
ขั้นตอน 2.1: Push เศษจากการหารเลขด้วย 2 เข้า stack
ขั้นตอน 2.2: ตั้งค่าเลข = เลข / 2
ขั้นตอน 3: Pop องค์ประกอบจาก stack และพิมพ์เลขฐานสอง
ตัวอย่างโค้ด
#include <iostream>
#include <stack>
using namespace std;
void dec_to_bin(int number) {
stack<int> stk;
while(number > 0) {
int rem = number % 2; // หาเศษ
number = number / 2;
stk.push(rem);
}
while(!stk.empty()) {
int item;
item = stk.top();
stk.pop();
cout << item;
}
}
main() {
int num;
cout << "Enter a number: ";
cin >> num;
dec_to_bin(num);
}
ผลลัพธ์
Enter a number: 18 10010