📄 catulate.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 + -