PC版Dev-C++6.7.5版本62进制计算器程序代码

#include
#include
#include
#include

using namespace std;
// 62 进制的字符映射
string base62 = “0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”;

// 将 62 进制数转换为十进制
long long base62ToDecimal(string num) {
long long decimal = 0;
int len = num.size();
for (int i = 0; i < len; i++) {
char digit = num[i];
int digitValue = -1;
for (int j = 0; j < 62; j++) {
if (base62[j] == digit) {
digitValue = j;
break;
}
}
if (digitValue == -1) {
cout << “输入的不是有效的 62 进制数!” << endl;
return -1;
}
decimal += digitValue * pow(62, len - i - 1);
}
return decimal;
}

// 将十进制转换为 62 进制
string decimalToBase62(long long decimal) {
string result;

while (decimal > 0) {
    int remainder = decimal % 62;
    result += base62[remainder];
        decimal /= 62;
}


reverse(result.begin(), result.end());
return result;

}

// 加法
string addBase62(string num1, string num2) {
long long decimal1 = base62ToDecimal(num1);
long long decimal2 = base62ToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return “错误: 无效的输入”;
}
long long sum = decimal1 + decimal2;
return decimalToBase62(sum);
}

// 减法
string subtractBase62(string num1, string num2) {
long long decimal1 = base62ToDecimal(num1);
long long decimal2 = base62ToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return “错误: 无效的输入”;
}
long long difference = decimal1 - decimal2;
if (difference < 0) {
return “错误: 结果为负数”;
}
return decimalToBase62(difference);
}

// 乘法
string multiplyBase62(string num1, string num2) {
long long decimal1 = base62ToDecimal(num1);
long long decimal2 = base62ToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return “错误: 无效的输入”;
}
long long product = decimal1 * decimal2;
return decimalToBase62(product);
}

// 除法
string divideBase62(string num1, string num2) {
long long decimal1 = base62ToDecimal(num1);
long long decimal2 = base62ToDecimal(num2);
if (decimal1 == -1 || decimal2 == -1) {
return “错误: 无效的输入”;
}
if (decimal2 == 0) {
return “错误: 除数不能为 0”;
}
long long quotient = decimal1 / decimal2;
return decimalToBase62(quotient);
}

// 平方根
string squareRootBase62(string num) {
long long decimal = base62ToDecimal(num);
if (decimal == -1) {
return “错误: 无效的输入”;
}
if (decimal < 0) {
return “错误: 不能计算负数的平方根”;
}
double root = sqrt(decimal);
return decimalToBase62(static_cast(root));
}

// 幂运算
string powerBase62(string num, int exponent) {
long long decimal = base62ToDecimal(num);
if (decimal == -1) {
return “错误: 无效的输入”;
}
long long powerResult = static_cast(pow(decimal, exponent));
return decimalToBase62(powerResult);
}

// 阶乘
string factorialBase62(string num) {
long long decimal = base62ToDecimal(num);
if (decimal == -1) {
return “错误: 无效的输入”;
}
if (decimal < 0) {
return “错误: 负数没有阶乘”;
}
long long fact = 1;
for (long long i = 1; i <= decimal; i++) {
fact *= i;
}
return decimalToBase62(fact);
}

int main() {
int choice;
string num1, num2, result;

do {
    cout << "1. 加法" << endl;
    cout << "2. 减法" << endl;
    cout << "3. 乘法" << endl;
    cout << "4. 除法" << endl;
    cout << "5. 平方根" << endl;
    cout << "6. 幂运算" << endl;
    cout << "7. 阶乘" << endl;
    cout << "8. 继续" << endl;
    cout << "9. 退出" << endl;
    cout << "请选择: ";
    cin >> choice;

    switch (choice) {
        case 1:
            cout << "请输入第一个 62 进制数: ";
            cin >> num1;
            cout << "请输入第二个 62 进制数: ";
            cin >> num2;
            result = addBase62(num1, num2);
            cout << "结果: " << result << endl;
            break;
        case 2:
            cout << "请输入被减数(62 进制): ";
            cin >> num1;
            cout << "请输入减数(62 进制): ";
            cin >> num2;
            result = subtractBase62(num1, num2);
            cout << "结果: " << result << endl;
            break;
        case 3:
            cout << "请输入第一个 62 进制数: ";
            cin >> num1;
            cout << "请输入第二个 62 进制数: ";
            cin >> num2;
            result = multiplyBase62(num1, num2);
            cout << "结果: " << result << endl;
            break;
        case 4:
            cout << "请输入被除数(62 进制): ";
            cin >> num1;
            cout << "请输入除数(62 进制): ";
            cin >> num2;
            result = divideBase62(num1, num2);
            cout << "结果: " << result << endl;
            break;
        case 5:
            cout << "请输入要计算平方根的 62 进制数: ";
            cin >> num1;
            result = squareRootBase62(num1);
            cout << "结果: " << result << endl;
            break;
        case 6:
            cout << "请输入底数(62 进制): ";
            cin >> num1;
            int exponent;
            cout << "请输入指数: ";
            cin >> exponent;
            result = powerBase62(num1, exponent);
            cout << "结果: " << result << endl;
            break;
        case 7:
            cout << "请输入要求阶乘的 62 进制数: ";
            cin >> num1;
            result = factorialBase62(num1);
            cout << "结果: " << result << endl;
            break;
        case 8:
            cout << "继续进行其他操作..." << endl;
            break;
        case 9:
            cout << "退出系统!" << endl;
            break;
        default:
            cout << "无效的选择,请重新输入!" << endl;
    }
} while (choice!= 9);

return 0;

}

  • 36
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EYYLTV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值