1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
typedef struct polynome
{
int El[50];
}polynome;
polynome algo(polynome P,polynome Q,polynome R,int degre)
{
polynome P2,Q1,Q2,S1,S2;
int I,D,D1,D2;
if(degre==0)
{
R.El[0]=P.El[0]*Q.El[0] ;
return R;
}
else
{
D1=(degre+1)/2;
D=D1-1;// Taille du polynome Resultat R //
I=0;
for(I=0;I<D;I++)//Boucle de décomposition du polynome //
{
P2.El[I]=P.El[I+D1];
Q2.El[I]=Q.El[I+D1];
S1.El[I]=P.El[I]+P2.El[I];
S2.El[I]=Q.El[I]+Q2.El[I];
}
P=algo(P,Q,P,D);
P2=algo(P2,Q2,P2,D);
S1=algo(S1,S2,S1,D);
R=P;
D2=2*D+2;
R.El[D2-1]=0;
for(I=0;I<2*D;I++)
R.El[I+D2]=P2.El[I];
for(I=0;I<2*D;I++)
R.El[I+D1]=R.El[I+D1]+S1.El[I]-(P.El[I]+P2.El[I]);
}
}
int main()
{
polynome P,Q,R;int degre=3;
cout<<" Polynome P : " ;
for(int i=0;i<degre;i++)
{
cout<<" P ["<<i<<"]";
cin>>P.El[i];
}
cout <<endl,"****************************************";
for(int i=0;i<degre;i++)
{
cout<<" Q ["<<i<<"]";
cin>>Q.El[i];
}
R=algo(P,Q,R,degre);
for(int i=0;i<2*degre-1;i++)
cout<<R.El[i]<<" ";
} |
Partager