四则运算 两种方法设计程序,从键盘输入任意两个数和一个运算符(+、-、*、/),计算其运算的结果并输出。考虑整型、小数等不同类型数的四则运算。 方法1函数原型:bool calc(int&result, int a, int b, char type); bool calc(double&result, double a, double b, char type); 方法2函数模板原型: template<typename T> bool calc(T&result,T a,T b, char type);
时间: 2024-03-02 18:48:38 浏览: 120
这两种方法实现的功能是相同的,都是实现整型、小数等不同类型数的四则运算,并输出结果。但是它们的实现方式不同:
方法1需要分别定义针对整型和小数的计算函数,需要编写两个函数,这样会增加代码量和维护难度。同时,如果要支持其他类型,则需要添加相应的函数。
方法2使用函数模板来定义计算函数,只需要编写一个通用的函数,可以支持任何数据类型的计算。这样可以减少代码量和维护难度。同时,如果要支持其他类型,则只需要添加相应的类型即可。
下面是方法1的实现:
```c++
bool calc(int& result, int a, int b, char type) {
switch (type) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
if (b == 0) {
return false;
}
result = a / b;
break;
default:
return false;
}
return true;
}
bool calc(double& result, double a, double b, char type) {
switch (type) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
if (b == 0) {
return false;
}
result = a / b;
break;
default:
return false;
}
return true;
}
```
下面是方法2的实现:
```c++
template<typename T>
bool calc(T& result, T a, T b, char type) {
switch (type) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
if (b == 0) {
return false;
}
result = a / b;
break;
default:
return false;
}
return true;
}
```
使用方法2,可以这样调用:
```c++
int main() {
int i_result;
double d_result;
int i_a = 10;
int i_b = 2;
char op = '/';
if (calc(i_result, i_a, i_b, op)) {
printf("i_result = %d\n", i_result);
} else {
printf("invalid operation\n");
}
double d_a = 10.0;
double d_b = 3.0;
op = '/';
if (calc(d_result, d_a, d_b, op)) {
printf("d_result = %f\n", d_result);
} else {
printf("invalid operation\n");
}
return 0;
}
```
阅读全文