根據公式計算y的值。其中∑表示求各項的和,∏表示求各項的積。定義一個類F,實現上述功能。具體要求如下:

根據公式計算y的值。其中∑表示求各項的和,∏表示求各項的積。定義一個類F,實現上述功能。具體要求如下:
(1)私有數據成員
double x[5]:存放xi(i=1,2,3,4,5)的值,xi不能爲0。
int n,k,h:公式中對應的變量,n不能爲0。
double y:存放計算結果。
(2)公有成員函數
F(double a[], int _n, int _k, int _h):構造函數,分別初始化x、n、k、h。
void calc():根據公式計算y的值。
(3)友元函數
void print(F f):輸出對象f所有數據成員。
(4)在主函數中對該類進行測試。測試數據xi取3.2、-2.5、-4.2、3.6、5.2,n取5,k取3,h取4,測試結果y=2.59513×1040。注意公式中用到的函數( 乘方、對數、絕對值、平方根)請在頭文件math.h中查找。正確的輸出結果如下:
3.2  -2.5 -4.2 3.6  5.2
5  3  4
2.59513e+040


 

// class3_1.cpp : 定義控制檯應用程序的入口點。
//

#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;
class F;

class F1
{
public:
	void print(F f);
};
class F
{
	public:
	F(double a[], int _n, int _k, int _h)
	{  
	 int i;
	 for(i=0;i<5;i++)
	 {
	 	x[i]=a[i];
	  }
	  n=_n;
	  k=_k;
	  h=_h;
	  } ;//:構造函數,分別初始化x、n、k、h。
void calc();//:根據公式計算y的值。
friend void F1::print(F f);
private:
double x[5];
double y;
int n,k,h;
	
};

void F::calc()
{
	double mul=1,sum=0;
	double fsum=0;
	int i;
	double xk[5],xh[5];
	xh[0]=1;
	xk[0]=1;
	for(i=0;i<5;i++)
	{
		sum+=pow(x[i],h);
		mul*=pow(x[i],k)*log(fabs(x[i]));
	}
	for(i=0;i<n;i++)
	{
		fsum+=sqrt(fabs(x[i]));
	}
	fsum=(0.2)*fsum;
	
	y=pow(mul/sum+fsum,k+h);
}
void F1::print(F s)
{
	int i;
	s.calc();
	cout<<"y= "<<s.y<<endl;
	cout<<" n:"<<s.n<<" k:"<<s.k<<"  h:"<<s.h<<endl;
		for(i=0;i<5;i++)
		{
		 cout<<s.x[i]<<" ";
		}
		cout<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
	double xi[5]={ 3.2,-2.5,-4.2,3.6,5.2};
	F f(xi,5,3,4);
	F1 f1;
	f1.print(f);
	return 0;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章