{
private int data[][]=new int[2][101];
private int length=0;
void insert(int ai,int ei)
//在原有多项式中加入一个新项(系数ai,指数ei):查找ei的同类项,合并新项
{
int i,j;
i=0;
while(i<length)
{
if(ei<=data[1][i]) break;
i++;
}
if(i==length) //(ai,ei)为多项式里面的最大指数项,直接在length标记单元置入新项即可
{data[0][length]=ai;data[1][length]=ei;length++;}
else//在原多项式里面找到了不小于ei的项
if(ei==data[1][i]) data[0][i]+=ai;
else
{
for(j=length-1;j>=i;j--) {data[0][j+1]=data[0][j];data[1][j+1]=data[1][j]; }
data[0][i]=ai;
data[1][i]=ei;
length++;
}
}
void zjh()
//消除的0系数项
{
int i,j;
i=0;
while(i<length) {
if(data[0][i]==0) break;
i++;
}
j=i;
i=j+1;
while(i<length) {
if(data[0][i]!=0)
{data[0][j]=data[0][i];data[1][j]=data[1][i];j++;}
i++;
}
length=j;
}
void outpoly()
//遍历数组并输出数据
{
int i;
if(length==0) System.out.println("f(X)=0 ");
else {
System.out.print("f(X)= "+data[0][0]+"X"+data[1][0]);
i=1;
while(i<length){
if(data[0][i]>0) System.out.print(" + "+data[0][i]+"X"+data[1][i]);
else System.out.print(" - "+(-1*data[0][i])+"X"+data[1][i]);
i++;
}
System.out.println("\n");
}
}
int getai(int i)
//取第i项的系数:i越界否,若否return data[0][i]
{return data[0][i];}
int getei(int i)
//取第i项的指数:i越界否,若否return data[1][i]
{return data[1][i];}
int getlength()
//return length
{return length;}
}
{
public static void main(String args[]){
poly f1;//,f2,fadd,fmulty
int ai,ei;
Scanner rs=new Scanner(System.in);
//创建f1多项式:调用insert若干次;调用zjh;调用outpoly
f1=new poly();
System.out.print("请输入一个项(ai,ei)(0,0)表示结束:");
ai=rs.nextInt();
ei=rs.nextInt();
while(ai!=0) {
f1.insert(ai, ei);
f1.outpoly();
System.out.print("请输入一个项(ai,ei)(0,0)表示结束:");
ai=rs.nextInt();
ei=rs.nextInt();
}
f1.outpoly();
f1.zjh();
f1.outpoly();
//创建f2多项式:调用insert若干次;调用zjh;调用outpoly
//fadd =f1+f2:
//fmulty =f1*f2
}
}
是多项式相加还是什么来着,记不清了。
没有题目吗,只是补全代码注释不太好理解代码意思。