Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:16_II / умножение полинома
.cpp#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);
}
Соседние файлы в папке 16_II