发新话题
打印

这个程序为什么c不能正常输出 急?

#include<iostream.h>
#include<math.h>
typedef double fs(int);
fs s;
fs g;
fs t;
double s(int k)
{  return sin(k);
}
double g(int l)
{  
return sqrt(pow(l,2)+1);
}
double t(int g)
{   
return 1/(pow(g,2)+1);
}
double T(fs *f,int a,int b,int n)
{   int i;double k;
    double c;
k=f(a);
  
  c=(b-a)/n*(f(a)+f(b))/2;
cout<<"s="<<c<<endl;
   for(i=1;i<n;i++)
   {    c+=(b-a)/n*f(a+i*(b-a)/n);
   }
   return c;
}
void main()
{
   int n,a,b;
   double m;
   cout<<"求第一个函数的积分:"<<endl;
   cin>>a>>b>>n;
   m=T(t,a,b,n);
   cout<<"第一个积分值为:"<<m<<endl;
   cout<<"求第二部分的积分:"<<endl;
   cin>>a>>b>>n;
   m=T(g,a,b,n);
   cout<<"第二部分的积分值为:"<<m<<endl;
   cout<<"求第三部分的积分:"<<endl;
   cin>>a>>b>>n;
   m=T(s,a,b,n);
   cout<<"第三部分的积分值为:"<<m<<endl;
   
}

TOP

尝试把T函数改成这样
double T(fs *f,int a,int b,int n)
{
int i;double k;
double c;
k=f(a);

c=(b-a)/(double)n*(f(a)+f(b))/2;
cout<<"s="<<c<<endl;
for(i=1;i<n;i++)
{
  c+=(b-a)/(double)n*f(a+i*(b-a)/(double)n);
}
return c;
}

就是进行除法前把除数转换成double类型

TOP

发新话题