您的位置:首页 > 其它

一元多项式化简

2016-07-05 22:00 155 查看
/******************************************************************************

Copyright (C), 2001-2011, Huawei Tech. Co., Ltd.

******************************************************************************

File Name     :

Version       :

Author        :

Created       : 2010/9

Last Modified :

Description   :

Function List :

History       :

1.Date        : 2010/9

Author      :

Modification: Created file

******************************************************************************/

#include <string.h>

#include <stdio.h>

/******************************************************************************************************

Description     : 对输入的一元多项式,进行同类项合并,输出处理后的一元多项式 

Prototype       : void OrderPolynomial (char* InputString, char* OutputString)

Input Param     : char* InputString 输入多项式字符串

Output Param    : char* OutputString 输出多项式字符串

Return Value    : void

********************************************************************************************************/

void zhuanhua (int* a, char* OutputString,int n)

{
int i=1;
int j;
char b[10];
int num=0;
if(a[0]==0)
i=2;
else
{
if(a[0]<0)
{
OutputString[0]='-';
a[0]=-1*a[0];
++num;
}
sprintf(b,"%d",a[0]);
for(j=0;b[j]!='\0';++j)
{
OutputString[num]=b[j];
++num;
}
OutputString[num]='X';
++num;
OutputString[num]='^';
++num;
}
while((i<=n))
{
if((a[i]==0)&&(i%2==0))
{
i=i+2;
continue;
}
if((i+1)<=n)
if((a[i+1]==-1)&&((i+1)%2==1))
break;
if(i%2==1)
{
sprintf(b,"%d",a[i]);
for(j=0;b[j]!='\0';++j)
{
OutputString[num]=b[j];
++num;
}
}
if(i%2==0)
{
if(a[i]<0)
{
OutputString[num]='-';
a[i]=-1*a[i];
++num;
}
else
{
OutputString[num]='+';
++num;
}
sprintf(b,"%d",a[i]);
for(j=0;b[j]!='\0';++j)
{
OutputString[num]=b[j];
++num;
}
OutputString[num]='X';
++num;
OutputString[num]='^';
++num;
}
++i;
}
OutputString[num]='\0';

}

void OrderPolynomial (char* InputString, char* OutputString)

{

    /*在这里实现功能*/

    int a[40];
int i,j,b,flag;
int num=0;
for(i=0;i<40;++i)
{
a[i]=0;
}

    if(InputString[0]=='-')
flag=-1;
else
{
a[0]=InputString[0]-'0';
flag=1;
}
for(i=1;InputString[i]!='\0';++i)
{

        if((InputString[i]>='0')&&(InputString[i]<='9'))
{
a[num]=10*a[num]+InputString[i]-'0';
}
if(InputString[i]=='X')
{
a[num]=a[num]*flag;
++num;
}
if(InputString[i]=='-')
{
flag=-1;
++num;
}
if(InputString[i]=='+')
{
flag=1;
++num;
}
}

for(i=1;i<=num;i=i+2)
{
for(j=i+2;j<=num;j=j+2)
{
if(a[i]==a[j])
{
a[i-1]=a[i-1]+a[j-1];
a[j]=-1;
}
}
}

    for(i=1;i<=num;i=i+2)
{
for(j=i+2;j<=num;j=j+2)
{
if(a[i]<a[j])
{
b=a[i];a[i]=a[j];a[j]=b;
b=a[i-1];a[i-1]=a[j-1];a[j-1]=b;
}
}
}
zhuanhua(a,OutputString,num);

    return;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: