c++编程使用函数模板实现整型与整型、整型与实型、实型与整型、实型与实型4种输出的计算器
时间: 2023-12-10 16:05:10 浏览: 81
好的,我可以帮你编写一个使用函数模板实现整型与整型、整型与实型、实型与整型、实型与实型四种输出的计算器的 C++ 程序。
以下是示例代码:
```c++
#include <iostream>
template<typename T1, typename T2>
auto calculator(T1 a, T2 b, char op) -> decltype(a + b) {
decltype(a + b) result;
switch (op) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
throw "Invalid operator!";
}
return result;
}
int main() {
char op;
std::cout << "Please enter an operator (+, -, *, /): ";
std::cin >> op;
if (op != '+' && op != '-' && op != '*' && op != '/') {
std::cout << "Invalid operator!" << std::endl;
return 0;
}
std::cout << "Please enter two numbers: ";
if (typeid(T1) == typeid(int) && typeid(T2) == typeid(int)) {
int num1, num2;
std::cin >> num1 >> num2;
int result = calculator(num1, num2, op);
std::cout << "Result: " << result << std::endl;
} else {
double num1, num2;
std::cin >> num1 >> num2;
double result = calculator(num1, num2, op);
std::cout << "Result: " << result << std::endl;
}
return 0;
}
```
这个程序使用了函数模板 `calculator`,它接收两个类型为 T1 和 T2 的参数和一个 char 类型的操作符。根据操作符,在 switch 语句中执行相应的操作,并返回结果。由于 T1 和 T2 可能是整型或实型,因此我们使用了 `decltype` 运算符来推断结果类型。
在 `main` 函数中,我们首先要求用户输入一个操作符,然后再输入两个数字。如果两个数字都是整型,那么我们使用 `int` 类型来计算结果;否则,我们使用 `double` 类型来计算结果。最后,我们调用 `calculator` 函数,计算出结果并输出。
你可以根据需要修改这个程序,例如可以添加更多的操作符或者修改输入输出的格式。
阅读全文