1个回答
展开全部
上面的横线什么意思?是平均数、取补、还是非逻辑?或者是什么其它的意义?
横线是一个一元函数,可以单独写一个子程序来计算。比如int bar(int x){}
你也可以用操作符重载 int operator--(int x){}就是把全局操作符--用来计算你的上划线。
然后得到的结果再代入另一个子程序
int fun(int x,int y){
int a=bar(x)*y-bar(x)*bar(y);
int b=bar(x*x)-bar(x)*bar(x);
/*也可以写成int b=bar(pow(x,2)-pow(bar(x),2);但是你要引用<math.h>或者<cmath>*/
return a/b;
}
主程序里就可以写int k=fun(x,y);了
如果不是visual C++,建议先声明int a,b;然后写计算代码,不然会出错(对于C语言,一定要先声明,再计算。声明和计算在同一行是C++的专利)。
注:
operator--(int &x)的使用方法为:--x
operator--(int &&x)的使用方法为:x--
operator--(int x)的使用方法为:我忘了,你试一下吧。
横线是一个一元函数,可以单独写一个子程序来计算。比如int bar(int x){}
你也可以用操作符重载 int operator--(int x){}就是把全局操作符--用来计算你的上划线。
然后得到的结果再代入另一个子程序
int fun(int x,int y){
int a=bar(x)*y-bar(x)*bar(y);
int b=bar(x*x)-bar(x)*bar(x);
/*也可以写成int b=bar(pow(x,2)-pow(bar(x),2);但是你要引用<math.h>或者<cmath>*/
return a/b;
}
主程序里就可以写int k=fun(x,y);了
如果不是visual C++,建议先声明int a,b;然后写计算代码,不然会出错(对于C语言,一定要先声明,再计算。声明和计算在同一行是C++的专利)。
注:
operator--(int &x)的使用方法为:--x
operator--(int &&x)的使用方法为:x--
operator--(int x)的使用方法为:我忘了,你试一下吧。
追问
上面的横线是平均数,并且得到的K不是整数。应该不能用int吧?平均数是用bar表示吗?
追答
那你就用一个数组代入吧
/*平均数*/
double average(double *array,int size){
double temp=0.0;
for (int i=0;i<size;i++){
temp+=array[i];
}//求合
return temp/size;
}/*
平均数的英文是average。你也可以用一个特征变量来表明数组结束,而不用通过int size传递数组长度。
另外,在visual C++中,允许使用中文作标识符,
如:double 平均数(double *采样数组,int 长度){}
*/
/*数组元素依次相乘*/
void MUL(double *ret;double *x,double *y,int size){
for(int i=0;i<size;i++){
ret[i]=x[i]*y[i];
}//for
}//用ret作为输出数组
/*方程*/
double fun(double *x,double *y,int size){
double *mul_xy=new double [size];
MUL (mul_xy,x,y,size);
double *mul_xx=new double[size];
MUL(mul_xx,x,x,size);
double aver_x=average(x,size);
double aver_y=average(y,size);
double ret= (average(mul_xy)-aver_x*aver_y)/(average(mul_xx)-aver_x*aver_x);
delete mul_xy;
delete mul_xx;
return ret;
}
void main(){
double *x,*y,size;
printf ("输入长度:\n");
scanf("%d",&size);
x=new double [size];//可以得到长度为size的数组
y=new double [size];
for (int i=0;i<size;i++){
printf("输入第%d组数据(x,y):\n",i);
scanf("%lf%*%lf",x+size,y+size);
}//输入
double ret= fun(x,y,size);
printf("所得结果为:%lf\n",ret);
delete x;/*释放内存,但是如果你电脑不是太古老,不写这个也没什么,估计这个程序用不了10MB以上的内存。下次重启系统的时候内存又回来了。*/
delete y;
return;
}//如果你想要自动获取长度的代码就有点复杂了。这个代码是新手学习的等级,一般控制台程序要处理大量数据的时候,建议写到文件中处理。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询