首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++运行程序时遇到有关问题需要关闭

2012-03-04 
c++运行程序时遇到问题需要关闭用Romberg法求上限为9,下限为1,根号x的积分编译可以通过,运行时就出现“4_8.

c++运行程序时遇到问题需要关闭
用Romberg法求上限为9,下限为1,根号x的积分
编译可以通过,运行时就出现“4_8.exe遇到问题需要关闭.....",大家帮我看一下是不是越界了,还是其他原因

#include<iostream.h>
#include<math.h>
double f(double);
int k,m;
double a=1,b=9,kexi=1e-6,q,sum=0;
double T[20][20]={0};
void main()
{
T[0][0]=(b-a)*(f(a)+f(b))/2;
  k=1;
flag:
q=int(pow(2,k-1));
for(int i=1;i<=q;i++)
{
sum+=f(a+(2*i-1)*(b-a)/(q*2));
}
T[0][k]=0.5*(T[0][k-1]+(b-a)*sum/q);
  for(m=1;m<=k;m++)
{
T[m][k-m]=(pow(4,m)*T[m-1][k-m+1]-T[m-1][k-m])/(pow(4,m)-1);
}
if(fabs(T[k][0]-T[k-1][0])<kexi)
cout<<"满足精度的积分近似值为"<<T[k][0]<<endl;
else
{
k++;
goto flag;
}
}
double f(double x)
{
return sqrt(x);
}



[解决办法]
关键位置log出去或者trace一下看看
[解决办法]

C/C++ code
#include <iostream.h>#include <math.h>double f(double);int k,m;double a=1,b=9,kexi=1e-6,q,sum=0;double T[20][20]={0};void main(){T[0][0]=(b-a)*(f(a)+f(b))/2;    k=1;flag:     //这个是怎样的,实在看不明白。q=int(pow(2,k-1));   // pow()这个在参数方面也有问题。for(int i=1;i <=q;i++){sum+=f(a+(2*i-1)*(b-a)/(q*2));}T[0][k]=0.5*(T[0][k-1]+(b-a)*sum/q);    for(m=1;m <=k;m++){T[m][k-m]=(pow(4,m)*T[m-1][k-m+1]-T[m-1][k-m])/(pow(4,m)-1);}if(fabs(T[k][0]-T[k-1][0]) <kexi)cout < <"满足精度的积分近似值为" < <T[k][0] < <endl;else{k++;goto flag;}}double f(double x){return sqrt(x);}//楼主还是重贴一次代码吧。用格式贴现率 

热点排行