arnaudm57 | Code :
- #define d 100
- #include <stdio.h>
- #include <conio.h>
- typedef struct { int coefficient;
- int exposant;
- } monome;
- void main()
- {
- monome polynome[d+1];
- monome k_derive[d+1];
- int degre_derive,nbmonome;
- int lire_polynome (monome[]);
- void affiche_polynome (monome[],int);
- void derive_polynome(monome[],monome[],int,int);
- nbmonome=lire_polynome(polynome);
- affiche_polynome(polynome,nbmonome);
- printf("\nQuelle d%criv%ce voulez vous calculer ? ", 130, 130);
- scanf("%d", °re_derive);
- derive_polynome(polynome,k_derive,nbmonome,degre_derive);
- getch();
- }
- int lire_polynome(monome polynome[])
- {
- int nbmonome=0;
- char choix,reponse;
- printf("Veuillez entrer vos mon%cmes non nuls par degr%c croissant.\n", 147, 130);
- do
- {
- do
- {
- printf("\nQuel est le coefficient du mon%cme ? ", 147);
- scanf("%d", &polynome[nbmonome].coefficient);
- while(polynome[nbmonome].coefficient==0)
- {
- printf("Vous avez entr%c un polyn%cme de coefficient nul.\n", 130, 147);
- printf("Veuillez entrer un coefficient non nul : " );
- scanf("%d",&polynome[nbmonome].coefficient);
- }
- printf("Quel est l'exposant qui lui est associ%c? : ", 130);
- scanf("%d", &polynome[nbmonome].exposant);
- while((nbmonome>0)&&(polynome[nbmonome].exposant <= polynome[nbmonome-1].exposant))
- {
- printf("\Désol%c. Ce polynôme a un exposant plus petit ou %cgal au précédent.\n", 130, 130);
- printf("Veuillez entrer un exposant plus grand que le pr%cc%cdent: ", 130, 130);
- scanf("%d",&polynome[nbmonome].exposant);
- }
- printf("\nVous avez entrez : %dX^%d, est-ce bien correct ? ", polynome[nbmonome].coefficient, polynome[nbmonome].exposant);
- scanf("%s", &reponse);
- }
- while(reponse != 'o');
- printf("Voulez vous entrer un autre mon%cme? (o/n) : ", 147);
- scanf("%s", &choix);
- nbmonome=nbmonome+1;
- }
- while (choix != 'n');
- return nbmonome;
- }
- void affiche_polynome (monome polynome[],int nbmonome)
- {
- int i;
- for(i=0;i<nbmonome;i++)
- {
- if ( polynome[i].coefficient >0 && polynome[i].exposant !=0 )
- printf("+%dX^%d",polynome[i].coefficient,polynome[i].exposant);
- else
- {
- if ( polynome[i].coefficient < 0 && polynome[i].exposant !=0 )
- printf("%dX^%d",polynome[i].coefficient,polynome[i].exposant);
- else
- {
- if (polynome[i].exposant == 0)
- printf("%d",polynome[i].coefficient);
- }
- }
- }
- }
- void derive_polynome ( monome polynome[], monome k_derive[], int nbmonome, int degre_derive)
- {
- int i;
- monome derive_monome(monome,monome,int);
- for(i=0;i<nbmonome+1;i++)
- {
- k_derive[i]=derive_monome(polynome[i],k_derive[i],degre_derive);
- }
- for(i=0;i<nbmonome+1;i++)
- {
- if ( k_derive[i].coefficient >0 && k_derive[i].coefficient !=0 )
- printf("+%dX^%d",k_derive[i].coefficient,k_derive[i].exposant);
- else
- {
- if ( k_derive[i].coefficient < 0 && k_derive[i].coefficient !=0 )
- printf("%dX^%d",k_derive[i].coefficient,k_derive[i].exposant);
- else
- {
- if (k_derive[i].exposant == 0 && k_derive[i].coefficient !=0)
- printf("%d",polynome[i].coefficient);
- }
- }
- }
- }
- monome derive_monome (monome polynome, monome k_derive, int degre_derive)
- {
- int j;
- k_derive.coefficient=polynome.coefficient;
- k_derive.exposant=polynome.exposant;
- if ( degre_derive>polynome.exposant )
- {
- k_derive.coefficient=0;
- k_derive.exposant=0;
- }
- else
- {
- for(j=0;j<degre_derive;j++)
- {
- k_derive.coefficient = k_derive.coefficient*k_derive.exposant;
- k_derive.exposant = (k_derive.exposant)-1;
- }
- }
- return k_derive;
- }
|
Voici l'ensemble du code comme ca il n'y aura plus d'ambiguité
Le problème se situe dans la fonction qui est située un peu plus haut au niveau de l'incrémentation.
|