#include <iostream>
#include <string>
#include <algorithm> // 用于reverse函数
using namespace std;
class Stack {
private:
int* arr; // 动态数组
int top; // 栈顶位置
int capacity; // 栈的最大容量
public:
// 构造函数
Stack(int size) {
capacity = size;
arr = new int[capacity];
top = -1; // 空栈时栈顶位置为-1
}
// 析构函数
~Stack() {
delete[] arr;
}
// 入栈操作
void push(int value) {
if (top < capacity - 1) {
arr[++top] = value;
} else {
cout << "Stack Overflow" << endl;
}
}
// 出栈操作
int pop() {
if (top >= 0) {
return arr[top--];
} else {
cout << "Stack Underflow" << endl;
return -1; // 返回一个错误值,表示栈为空
}
}
// 判断栈是否为空
bool isEmpty() {
return top == -1;
}
};
// 将十进制数转换为指定进制的函数
string decimalToBase(int decimal, int base) {
if (base < 2 || base > 9) {
return "Unsupported base";
}
Stack stack(100); // 假设栈的大小足够大
while (decimal > 0) {
stack.push(decimal % base);
decimal /= base;
}
string result = "";
while (!stack.isEmpty()) {
result += to_string(stack.pop());
}
return result;
}
int main() {
int decimalNumber;
int base;
cout << "请输入一个十进制正整数:";
cin >> decimalNumber;
cout << "请输入要转换的进制(2-9):";
cin >> base;
string result = decimalToBase(decimalNumber, base);
cout << "转换结果为:" << result << endl;
return 0;
}