注册 登录
编程论坛 C++教室

这个错误如何修改

hffjhhh 发布于 2020-12-10 19:28, 1857 次点击
这行出错:
g=x+y;

显示错误如下:
[Error] 'x' was not declared in this scope
如何修改?代码如下:
程序代码:
#include<iostream>
using namespace std;
int g;
double (*add)(double x,double y){
    g=x+y;
    return g;
}
double calculate(double x,double y,double *ar){
    double *p=new double;
    p=(*ar)(x,y);
    return *p;
}
int main(void){
    double j,k;
    while(1){
        cout<<"请输入j,k的值:";
        while(!(cin>>j)||!(cin>>k)){
            cin.clear();
            while(cin.get()!='\n');
                continue;   
            cout<<"错误,输入的是字母,请输入数字:\n";        
        }
    (*add)(j,k);
    double h=calculate(j,k,add);
    cout<<"calculate函数的返回值为:"<<h<<endl;   
    delete p;
    }
    return 0;
}


[此贴子已经被作者于2020-12-10 19:30编辑过]

7 回复
#2
rjsp2020-12-10 20:51
好多语法错误,都是最最基础的。
现在的问题是,你这代码是纯粹错成这样,还是题目要求必须使用函数指针?
#3
rjsp2020-12-10 21:06
程序代码:
#include <iostream>
#include <limits>
using namespace std;

double add( double x,double y )
{
    return x + y;
}

double calculate( double x, double y, double (*pfun)(double,double) )
{
    return (*pfun)( x, y );
}

int main(void)
{
    double a, b;
    for( ; ; )
    {
        cout << "请输入a,b的值:";
        cin >> a >> b;
        if( cin.eof() || cin.bad() )
            return 1;
        if( cin.fail() )
        {
            cin.clear();
            cin.ignore( numeric_limits<streamsize>::max(), '\n' );
            cout << "格式错误,";
        }
        else
            break;
    }

    double result = calculate( a, b, &add );
    cout << "calculate函数的返回值为:" << result << endl;   
}
#4
hffjhhh2020-12-10 21:07
回复 2楼 rjsp
题目要求必须使用函数指针。
#5
rjsp2020-12-10 21:45
回复 4楼 hffjhhh
我在三楼给你写了,用了函数指针
#6
hffjhhh2020-12-10 22:04
以下是引用rjsp在2020-12-10 21:06:15的发言:

double add( double x,double y )
{
    return x + y;
}

这个函数的实现必须这样写,
不能像下面这样写?
double (*add)( double x,double y )
{
    return x + y;
}
#7
rjsp2020-12-11 12:52
回复 6楼 hffjhhh
不能
#8
chaofrog2020-12-11 19:22
感谢
1