Polynome en langage C

hicham-dj Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

voici un programme qui permet d'afficher , calculer la somme,la multiplication ... de polynomes

#include<stdio.h>
#define n 5 /* le plus grand degre possible pour les polynomes c'est n-1 */

struct poly
{
int dx; /* plus grand degre de X */
int dy; /* plus grand degre de Y */
int coef[2*n][2*n]; /*le tableau des coefficients du polynome on declare avec le cas generale de 2*n
car on vas utiliser cette meme structure pour representer le poly de multiplication*/
};

/*______________________________________________________________*/

void constructeur( poly *P )
{ int i,j;
/* l'initialisation */
for(i=0;i<2*n;i++)
for(j=0;j<2*n;j++)
P->coef[i][j] = 0;

printf("le plus grand exposent de x : " ); scanf("%d",&P->dx);
printf("le plus grand exposent de y : " ); scanf("%d",&P->dy);

for(i=0;i<=P->dx;i++)
32. for(j=0;j<=P->dy;j++)
{
printf(" le coeficien du monome ( x^%d y^%d ) : ",i,j);
scanf("%d",&P->coef[i][j]);
}
}

/*______________________________________________________________*/

void addition( poly *A , poly *B , poly *P )
{
int i,j;

/*il faut determiner la dimention de la matrice avec la puisance du poly */
if(A->dx > B->dx) P->dx = A->dx; else P->dx = B->dx;
if(A->dy > B->dy) P->dy = A->dy; else P->dy = B->dy;

for(i=0;i<=P->dx;i++)
for(j=0;j<=P->dy;j++)
P->coef[i][j] = A->coef[i][j] + B->coef[i][j];
}
/*_______________________________________________________________*/

void soustraction( poly *A , poly *B , poly *P )
{
int i,j;

for(i=0;i<=P->dx;i++)
for(j=0;j<=P->dy;j++)
P->coef[i][j] = A->coef[i][j] - B->coef[i][j];
}

/*______________________________________________________________*/
void multiplication( poly *A , poly *B , poly *P )
{
int i,j,g,z;

for(i=0;i<=P->dx;i++)
for(j=0;j<=P->dy;j++)
P->coef[i][j] = 0;

for(i=0;i<=A->dx;i++)
for(j=0;j<=A->dy;j++)
for(g=0;g<=B->dx;g++)
for(z=0;z<=B->dy;z++)
P->coef[i+g][j+z] += A->coef[i][j] * B->coef[g][z];
}

/*______________________________________________________________*/
void Affich_poly( poly *PP )
{
int i,j;

for(i=0;i<=PP->dx;i++)
for(j=0;j<=PP->dy;j++)
if(PP->coef[i][j] != 0)
printf(" +(%d) X%d Y%d",PP->coef[i][j],i,j);
}

/*______________________________________________________________*/

void ligne(void)
{ printf("\n\n ------------------------------------------\n\n" ); }

/*______________________________________________________________*/

int main()
{

poly P1 , P2 , P3 , P4 , P5;

constructeur(&P1);
printf("\nP1(X,Y) =" );
Affich_poly( &P1 );

ligne(); /*______________________________________________*/

constructeur( &P2 );
printf("\nP2(X,Y) =" );
Affich_poly( &P2 );
ligne(); /*______________________________________________*/

addition( &P1 , &P2 , &P3 );
printf("\nP1 + P2 =" );
Affich_poly( &P3 );

ligne(); /*______________________________________________*/

P4.dx = P3.dx;
P4.dy = P3.dy; /*la puissance du poly soustraction est egale a celle de l'addition*/
soustraction( &P1 , &P2 , &P4 );
printf("\nP1 - P2 =" );
Affich_poly( &P4 );

ligne(); /*______________________________________________*/
/* prevoir les dimentions (de X et de Y) pour la multiplication */
P5.dx = P1.dx + P2.dx;
P5.dy = P1.dy + P2.dy;
multiplication( &P1 , &P2 , &P5 );
printf("\nP1 * P2 =" );
Affich_poly( &P5 );
return 0;
}


quand j'ai compilé ce programme , code blocks me donne des erreurs :

Compiling: C:\Documents and Settings\Administrateur\Mes documents\Poly.c
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:15: error: expected ')' before '*' token
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:37: error: expected ')' before '*' token
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:51: error: expected ')' before '*' token
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:61: error: expected ')' before '*' token
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:77: error: expected ')' before '*' token
C:\Documents and Settings\Administrateur\Mes documents\Poly.c: In function 'main':
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:97: error: 'poly' undeclared (first use in this function)
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:97: error: (Each undeclared identifier is reported only once
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:97: error: for each function it appears in.)
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:97: error: expected ';' before 'P1'
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:99: error: 'P1' undeclared (first use in this function)
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:105: error: 'P2' undeclared (first use in this function)
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:110: error: 'P3' undeclared (first use in this function)
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:116: error: 'P4' undeclared (first use in this function)
C:\Documents and Settings\Administrateur\Mes documents\Poly.c:124: error: 'P5' undeclared (first use in this function)

Quelqu'un trouve les erreurs et les corriger SVP
A voir également:

1 réponse

Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour,
Ajoutez "struct" devant les "poly" en paramètre des fonctions et dans le main() aussi comme ce n'est pas un typedef ou alors modifier la structure :
typedef struct
{
int dx; /* plus grand degre de X */
int dy; /* plus grand degre de Y */
int coef[2*n][2*n]; /*le tableau des coefficients du polynome on declare avec le cas generale de 2*n
car on vas utiliser cette meme structure pour representer le poly de multiplication*/
}poly; 
0