这段程序代码怎么改??????-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

这段程序代码怎么改??????

2016-03-04 18:28:11 1536 1
#include "iostream"
using namespace std;
class Gelr
{
public:
void gelr1(double t,double y[] ,int n,double h,int k,double z[][11]);
void gelrf(double t,double y[],int n,double d[]);
//void display();
protected:
double t;
double y[3];
int n;
double h;
int k;

double z[3][11];
double d[3];
};
void Gelr::gelr1(double t,double y[],int n,double h,int k, double x[])
{
int i,j;
double x,*d;
d=static_cast(malloc(n*sizeof(double)));
for (i=0; i<=n-1; i++) z[i*k]=y[i];
for (j=1; j<=k-1; j++)
{ x=t+(j-1)*h;
gelrf(x,y,n,d);
for (i=0; i<=n-1; i++)
y[i]=z[i*k+j-1]+h*d[i];
x=t+j*h;
gelrf(x,y,n,d);
for (i=0; i<=n-1; i++)
d[i]=z[i*k+j-1]+h*d[i];
for (i=0; i<=n-1; i++)
{ y[i]=(y[i]+d[i])/2.0;
z[i*k+j]=y[i];
}
}
free(d); return;
}
void Gelr::gelrf(double t,double y[],int n,double d[])
{
t=t;
n=n;
d[0]=y[1];
d[1]=-y[0];
d[2]=-y[2];
return;
}
int main()
{
int i,j;
double y[3],z[3][11],t,h,x;
y[0]=-1.0; y[1]=0.0; y[2]=1.0;
t=0.0; h=0.01;
Gelr g;
g.gelr1(t,y,3,h,11,z);
cout<<"\n"<<endl;
for (i=0; i<=10; i++)
{ x=i*h;
cout<<"t:"<<x<<endl;
for (j=0; j<=2; j++)
cout<<"y("<<j<<")=%"<<z[j][i]<<endl;
cout<<"\n"<<endl;
}
cout<<"\n"<<endl;
return 0;
}

--------------------Configuration: sdt - Win32 Debug--------------------
Compiling...
sdt.cpp
D:防灾C++程序设计电子教案微分方程stdsdt.cpp(19) : error C2511: 'gelr1' : overloaded member function 'void (double,double [],int,double,int,double [])' not found in 'Gelr'
D:防灾C++程序设计电子教案微分方程stdsdt.cpp(4) : see declaration of 'Gelr'
执行 cl.exe 时出错.
sdt.exe - 1 error(s), 0 warning(s)

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 18:52:43

    在这段代码中,有以下问题:
    1.gelr1函数前没有类的作用域运算符,那么它就不是类的成员函数,g.gelr1(t,y,3,h,11,z)这样的调用要出错;
    2.gelr1中数组z的类型不匹配;
    3.static_cast的用法错了;
    你把代码改成这样:

    void Gelr::gelr1(double t,double y[],int n,double h,int k, double z[][11])
    {
    int i,j;
    double x,*d;
    d=static_cast(malloc(n*sizeof(double)));
    for (i=0; i<=n-1; i++) 
    z[i][0]=y[i];
    for (j=1; j<=k-1; j++)
    { x=t+(j-1)*h;
    gelrf(x,y,n,d);
    for (i=0; i<=n-1; i++)
    y[i]=z[i][j-1]+h*d[i];
    x=t+j*h;
    gelrf(x,y,n,d);
    for (i=0; i<=n-1; i++)
    d[i]=z[i][j-1]+h*d[i];
    z[i][j]=y[i];
    for (i=0; i<=n-1; i++)
    { y[i]=(y[i]+d[i])/2.0;
    }
    }
    free(d); 
    return;
    }
    0 0
相关问答

1

回答

如何构建机器学习算法?

问问小秘 2020-04-15 14:07:23 36391浏览量 回答数 1

42

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 147619浏览量 回答数 42

53

回答

OSS C/C++ SDK分享交流区

否极泰来 2015-06-15 17:05:09 48825浏览量 回答数 53

49

回答

elasticjob vs xxl-job,应该选择哪一个?

FantuanTech 2022-02-16 00:09:57 56518浏览量 回答数 49

1

回答

漫画版:什么是机器学习?

剑曼红尘 2020-04-15 18:52:41 37105浏览量 回答数 1

7

回答

机器学习PAI中数据视图组件怎么查看100条以后的数据

拼夕夕小马 2019-06-22 22:01:34 118356浏览量 回答数 7

58

回答

技术入门问答集锦,涉及多种技术方向,解决新人学习困惑

管理贝贝 2016-08-03 10:13:27 53657浏览量 回答数 58

23

回答

【云服务器分享】网站访问速度快才是硬道理

dreamdoo 2012-10-15 10:15:02 86597浏览量 回答数 23

24

回答

比赛_快速入门_4_19_update_仅供参考,思维不要受局限

小斯never 2015-03-22 18:22:43 33652浏览量 回答数 24

46

回答

H5技术百问——不懂H5你就OUT啦

yq传送门 2017-09-09 11:03:04 48527浏览量 回答数 46
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载