Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

16_II / умножение полинома

.cpp
Скачиваний:
20
Добавлен:
10.02.2015
Размер:
1.64 Кб
Скачать
#include <iostream.h>
struct polin
{
	int koef;
	int step;
	polin *next;
};

void creat(polin *&nach, int n)
{
	polin *p;
	nach=NULL;
	int i;
	for (i=0; i<n; i++)
	{
		p=new polin;
		cout<<"p->koef: ";
		cin>>p->koef;
		cout<<"p->step: ";
		cin>>p->step;
		p->next=nach;
		nach=p;
	}
}

void pokaz(polin *nach){
	polin *p;
	cout<<endl;
	p=nach;
	while(p!=NULL){
		cout<<p->koef<<"*x^"<<p->step<<"+";
		p=p->next;
}}


void upor(polin *nach)
{
	polin *p=nach;
	polin *q;
	int a, b;
	while (p!=NULL)
	{
		q=p->next;
		while (q!=NULL)
		{
			if (p->step<q->step)
			{
				a=p->koef;
				p->koef=q->koef;
				b=p->step;
				p->step=q->step;
				q->koef=a;
				q->step=b;
			}
			q=q->next;
		}
		p=p->next;
	}
}

void prived(polin *nach)
{
	polin *p;
	p=nach;
	polin *q, *pred_q;
	while (p!=NULL)
	{
		pred_q=p;
		q=p->next;
		while (q!=NULL)
		{
			if (p->step==q->step)
			{
				p->koef=p->koef+q->koef;
				pred_q->next=q->next;
			}
			pred_q=q;
			q=q->next;
		}
		p=p->next;
	}
}

void proiz(polin *nach1, polin *nach, polin *&nach2)
{
	polin *p=nach1, *q=nach, *h;
	nach2=NULL;
	while (p!=NULL)
	{
		q=nach;
		while (q!=NULL)
		{
			h=new polin;
			h->koef=p->koef*q->koef;
			h->step=p->step+q->step;
			h->next=nach2;
			nach2=h;
			q=q->next;
		}
		p=p->next;
	}
}


void main()
{
	polin *nach, *nach1, *nach2;
	int n, m;
	cout<<"Enter n:";
	cin>>n;
	cout<<"Enter m:";
	cin>>m;
	creat(nach, n);
	creat(nach1, m);
	pokaz(nach);
	pokaz(nach1);
	proiz(nach1, nach, nach2);
	prived(nach2);
	upor(nach2);
	pokaz(nach2);
}