C++ 计算类型基于opt的值。我的代码如下,它不工作
计算类型基于opt的值:C++ 计算类型基于opt的值。我的代码如下,它不工作,c++,C++,计算类型基于opt的值: 0:求和 1:减法 2:乘法 3:分部 我不知道我做错了什么,因为我的电脑坏了。请帮我指出 #include <iostream> #include <fstream> using namespace std; int add(int a, int b) { return a + b; } int minus(int a, int b) { return a - b; } int multiply(in
- 0:求和
- 1:减法
- 2:乘法
- 3:分部
#include <iostream>
#include <fstream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int minus(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int divide(int a, int b) {
return a / b;
}
void calculate(int a, int b, int opt)
{
int (*myfunc)(int, int);
switch(opt){
case 0: add(a,b); break;
case 1: minus(a,b);break;
case 2: multiply(a,b);break;
case 3: divide(a,b);break;
}
int ans = (*myfunc)(a, b);
printf("Output of calculation is %d.\n", ans);
}
int main() {
calculate(1,2,1);
return 0;
}
#包括
#包括
使用名称空间std;
整数相加(整数a,整数b){
返回a+b;
}
整数减(整数a,整数b){
返回a-b;
}
整数乘法(整数a,整数b){
返回a*b;
}
整数除法(整数a,整数b){
返回a/b;
}
无效计算(整数a、整数b、整数opt)
{
int(*myfunc)(int,int);
开关(opt){
案例0:添加(a,b);中断;
案例1:负(a,b);中断;
案例2:乘法(a,b);中断;
案例3:分割(a,b);中断;
}
int ans=(*myfunc)(a,b);
printf(“计算输出为%d.\n”,ans);
}
int main(){
计算(1,2,1);
返回0;
}
@Ori
下面提到的正确代码。我希望它对你有用
#include <iostream>
#include <fstream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int minus_op(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int divide(int a, int b) {
return a / b;
}
void calculate(int a, int b, int opt)
{
int (*myfunc)(int, int);
int ans = 0;
switch(opt){
case 0: {
myfunc = add;
break;
}
case 1:
{
myfunc = minus_op;
break;
}
case 2:
{
myfunc = multiply;
break;
}
case 3:
{
myfunc = divide;
break;
}
default:
{
printf("Unknown option \n");
goto error;
}
}
ans = myfunc(a, b);
printf("Output of calculation is %d.\n", ans);
error:
return ;
}
int main() {
calculate(1, 2, 1);
return 0;
}
#包括
#包括
使用名称空间std;
整数相加(整数a,整数b){
返回a+b;
}
整数减去整数运算(整数a,整数b){
返回a-b;
}
整数乘法(整数a,整数b){
返回a*b;
}
整数除法(整数a,整数b){
返回a/b;
}
无效计算(整数a、整数b、整数opt)
{
int(*myfunc)(int,int);
int ans=0;
开关(opt){
案例0:{
myfunc=add;
打破
}
案例1:
{
myfunc=负的运算;
打破
}
案例2:
{
myfunc=乘法;
打破
}
案例3:
{
myfunc=除法;
打破
}
违约:
{
printf(“未知选项”);
转到错误;
}
}
ans=myfunc(a,b);
printf(“计算输出为%d.\n”,ans);
错误:
返回;
}
int main(){
计算(1,2,1);
返回0;
}
您的程序显示未定义的行为,通过访问未初始化的变量myfunc
您永远不会定义myfunc
,您只需继续调用add
之类的函数即可。你是说myfunc=add
?如果是这样的话,为什么不直接创建一个数组,比如{加、减、乘、除}
,然后根据索引调用函数呢?@tadman非常感谢。