Polynome en langage C

Fermé
hicham-dj Messages postés 6 Date d'inscription dimanche 6 mars 2011 Statut Membre Dernière intervention 13 septembre 2012 - 12 mars 2011 à 14:14
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 13 mars 2011 à 15:44
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

1 réponse

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
13 mars 2011 à 15:44
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