⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catulate.cpp

📁 多项式求值 实验一_多项式求值 多项式求值
💻 CPP
字号:

/*
******************************************************************************
 *多项式计算程序 
 *功能:计算多项式Pn(x)=∑Ai*Xi(i=0~n)的值,输入参数为A0~Ai,x,n,输出Pn(x)的值。 
 *计算完毕后输出提示信息,程序根据输入参数判断是否继续执行。 
 *   2007.3.10
 *******************************************************************************
 */
#include<iostream> 
using namespace std; 
void  print(int n, float x); //输出多项式P(x),如n=4,输出p(x)=a_0^0+a_1^1+a_2^2+a_3^3+a_4^4。// n,x为输入的参数。
long double sum(int state, int i,int n, float x, float ai); //通过调用catulate()函数,累和。
// state 为状态参数,i为x的次数,n,x为输入的参数,ai为中间变量
long double catulate(int i, int n, float x, float ai); //计算Ai*Xi^i的值,如Ai=2,x=3,i=2,则计算2*(3*3)的值。 
 //i为x的次数,n,x为输入的参数,ai为中间变量
int main() 
{ 
	
   int state=1; //设置状态参数,判断是否是首次输入。
 
   do { 
  
       cout<<"多项式计算程序:Pn(x)=∑Ai*Xi(i=0~n)"<<endl; 
       int n=0; 
       int m=1; 
       float x; 

         do //通过do,while 循环,判断n的值是否符合要求。 
		 { 
             if (m==1) 
               cout<<"请输入n和X的值 (n为大于零的整数): "<<endl; 
             else
			   cout<<"输入有误,请重新输入n和X的值 (n为大于零的整数): "<<endl; 
             cin>> n>>x; 
             m++; 
		 } 

        while (n<=0); 
      cout<<endl; 
      print(n,x); ////输出多项式P(x)。 
      cout<<"请输入a[0]至a[n]的值:"<<endl;
 
      float ai=0; //中间变量。

      for(int i=0; i<=n; i++) //通过for()循环依次输入A0~Ai的值,再调用sum()函数累和。 
	  { 
        cout<<"a_"<<i<<"="; 
        cin>>ai; 
        cout<<endl; 
        sum(state, i, n, x, ai); 
	  } 

     cout<<"是否结束计算?输入“1”结束,输入“0”继续."<<endl<<"请选择:"; 
     cin>>state; 
   } 
 while (state==0); //判断是否是首次输入。 
 return 0; 
} 
/*
 ******************************************************************
*输出多项式P(x),如n=4,输出p(x)=a_0^0+a_1^1+a_2^2+a_3^3+a_4^4。
******************************************************************* 
*/ 

void  print(int n, float x)  
{ 
   cout<<"p(x)="; 
   for(int i=0; i<=n; i++) 
   { 
      cout<<"a_"<<i<<"^"<<i; 
	  { 
         if(i!=n) 
			 cout<<"+"; 
          else 
			 cout<<endl; 
	  } 
   } 

  cout<<"n="<<n<<"\t"; 
  cout<<"x="<<x<<endl; 
} 


/*
 ***********************************************
*通过调用catulate()函数,累和,而不只事单纯求和。
************************************************** 
*/  
long double sum(int state, int i, int n, float x, float ai) 
{    

   long double catulate(int i, int n, float x, float ai); //i为x的次数,n,x为输入的参数,ai为中间变量 
   static int sumstate=0; //计数器,判断是否输出p(x)。
   static long double  sum=0; 
   if (state==0 && i==0)  //通过对状态参数和i的运算,判断是否是再此输入,若是则清零累加和 和 计数器 。
   { 
     sum=0; 
     sumstate=0; 
   } 

   sum+=catulate(i, n, x, ai); 
   sumstate++; 
      
   if (sumstate==(n+1)) 
   { 
     cout<<"p(x)="<<sum<<endl; 
   } 

   return 0; 
}
 
/*
***************************************************
*计算Ai*Xi^i的值,如Ai=2,x=3,i=2,则计算2*(3*3)的值。   
***************************************************
*/
 
long double catulate(int i, int n, float x, float ai)    
{ 

   long double midvalue =1; 

   for(int j=1; j<=i; j++) 
   { 
     midvalue*=x; 
   } 

   midvalue*=ai; 
   return midvalue; 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -