Пример #1
0
void MultiPolyn(polynomial &Pa,polynomial &Pb){
	LNode *qa = Pa->next;
	LNode *qb = Pb->next;
	LNode *qd = (LNode*)malloc(sizeof(LNode));
	qd->next = NULL;
	while(qb){
		LNode *qc = (LNode *)malloc(sizeof(LNode));
		qc->next = NULL;
		LNode *p = qc;
		qa = Pa->next;
		while(qa){
			LNode *node = (LNode *)malloc(sizeof(LNode));
			term t;
			t.coef = qb->data.coef * qa->data.coef;
			t.expn = qb->data.expn + qa->data.expn;
			node->data = t;
			node->next = p->next;
			p->next = node;
			p = p->next;
			qa = qa->next;
		}
		AddPolyn(qd,qc);
		qb = qb->next;
	}
	Pa = qd;
	free(Pb);
}
Пример #2
0
 void main()
 {
   polynomial p,q;
   int m;
   printf("请输入第一个一元多项式的非零项的个数:");
   scanf("%d",&m);
   CreatPolyn(&p,m);
   printf("请输入第二个一元多项式的非零项的个数:");
   scanf("%d",&m);
   CreatPolyn(&q,m);
   AddPolyn(&p,&q);
   printf("两个一元多项式相加的结果:\n");
   PrintPolyn(p);
   printf("请输入第三个一元多项式的非零项的个数:");
   scanf("%d",&m);
   CreatPolyn(&q,m);
   AddPolyn1(&p,&q);
   printf("两个一元多项式相加的结果(另一种方法):\n");
   PrintPolyn(p);
   printf("请输入第四个一元多项式的非零项的个数:");
   scanf("%d",&m);
   CreatPolyn(&q,m);
   SubtractPolyn(&p,&q);
   printf("两个一元多项式相减的结果:\n");
   PrintPolyn(p);
   printf("请输入第五个一元多项式的非零项的个数:");
   scanf("%d",&m);
   CreatPolyn(&q,m);
   MultiplyPolyn(&p,&q);
   printf("两个一元多项式相乘的结果:\n");
   PrintPolyn(p);
   DestroyPolyn(&p);
 }
Пример #3
0
int main()
{
	int result;
	poly p;
	poly b;
	Elem dat,dat1,dat2;

	createElem(&dat,0.0,0);
	createElem(&dat1,0.2,2);
	createElem(&dat2,0.3,3);
	
	create(&p);
	create(&b);
	//insertHead(p,dat1);
	//insertTail(p,dat2);
	OrderInsert(p,dat2,compareExpn);
	OrderInsert(p,dat1,compareExpn);
	traverse(p,print);
	LocElem(p, dat1, compareBoth,&result,"compareBoth");
		
	createElem(&dat2,0.1,3);
	OrderInsert(p,dat2,compareExpn);
	traverse(p,print);
	
	createElem(&dat2,-0.1,2);
	OrderInsert(p,dat2,compareExpn);
	traverse(p,print);	

	printf("---------------------------------------\n");
	createElem(&dat2,-0.3,5);
	OrderInsert(p,dat2,compareExpn);
	traverse(p,print);
	
	printf("---------------------------------------\n");
	//createElem(&dat2,0.5,1);
	createElem(&dat2,0.4,4);
	OrderInsert(b,dat2,compareExpn);
	createElem(&dat2,-0.1,2);
	OrderInsert(b,dat2,compareExpn);
	createElem(&dat2,-0.5,8);
	OrderInsert(b,dat2,compareExpn);
	createElem(&dat2,-0.9,7);
	OrderInsert(b,dat2,compareExpn);
	createElem(&dat2,-0.4,3);
	OrderInsert(b,dat2,compareExpn);

	traverse(b,print);
	printf("---------------------------------------\n");
	AddPolyn(p,b);
	traverse(p,print);
	printf("---------------------------------------\n");
	
	destroy(&p);
	destroy(&b);
	return OK;
}
Пример #4
0
//主函数
int main()
{
    int m;
    float x;
    polynomial p1,p2;//建立新链表
    p1.head=NULL;
    p1.tail=NULL;
    p1.len=0;
    p2.head=NULL;
    p2.tail=NULL;
    p2.len=0;
    printf("请输入关于x的多项式1中x的最高次幂:");
    scanf("%d",&m);
    if(m<0)
    {
        printf("输入值非法!\n");
    }
    CreatePolyn(&p1,m);//创建多项式
    printf("多项式1");
    PrintPolyn(&p1);//显示多项式1
    printf("请输入关于x的多项式2中x的最高次幂:");
    scanf("%d",&m);
    if(m<0)
    {
        printf("输入值非法!\n");
    }
    CreatePolyn(&p2,m);//创建多项式
    printf("多项式2");
    PrintPolyn(&p2);//显示多项式
    AddPolyn(&p1,&p2);
    printf("和多项式");
    PrintPolyn(&p1);//输出和多项式
    printf("输入x的值:");
    scanf("%f",&x);
    printf("多项式在x=%g时,值为%g",x,ComputeValue(&p1,x));//输出多项式求值
    DestroyPolyn(&p1);//销毁多项式
    return 0;
}
Пример #5
0
void SubtractPolyn(polynomail *pa, polynomail *pb) {
	ListTraverse(*pb, inverse);
	AddPolyn(pa, pb);
}