Bonjour,

J'ai un petit problème avec un certain exercice.

Un polynôme peut être représenté par une liste linéaire chainée, de façon à ce que chaque terme est stocké dans un maillon, qui est donc une structure contenant le coefficient, la puissance du terme courant, ainsi qu’un pointeur vers le terme suivant. Les termes sont stockés dans l’ordre croissant des puissances.

Voilà ma bibliothèque LIB.c

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
65
66
67
68
69
70
71
72
#include "Biblio_LLC_Polynome.h"
 
/** Implementation de la machine abstraite des polynomes **/
poly* allouer ( ) { return ((poly*) malloc( sizeof(poly))); }
void liberer (poly* P) { free(P); }
void aff_coef (poly *P, float v)  { P->coef =v; }
void aff_puiss (poly *P, int v) { P->puiss=v; }
void aff_adr(poly *P, poly *Q)  { P->suiv =Q; }
float coef (poly *P) { return (P->coef) ; }
int puiss(poly *P) { return (P->puiss); }
poly *suivant( poly *P) { return( P->suiv ); }
 
/** Afficher un polynome **/
void show_poly (poly* head)
{
    poly* P=head;
    if (P==NULL) {printf("0");} else { show_mono(P,1); P=suivant(P); }
    while (P!=NULL) { if (P->coef!=0) {show_mono(P,0);} P=suivant(P); }
}
/** Afficher un monome **/
void show_mono (poly* head , int problem)
{
    poly* P=head; float a=head->coef;
    if ( problem==1 && a<0) {printf("- ");} else { if (problem!=1) show_sign(a); }
    if ( ( a!=1 && a!=-1)  || P->puiss==0) { printf("%.02f" , fabs(a)); }
    if ( P->puiss > 0) {printf ("X"); }
    if ( P->puiss > 1) {printf("^%d" , P->puiss);}
}
/** Afficher le signe || c'est pour l'affichage correct des polynomes **/
void show_sign (float n) { if (n<0) {printf("  - ");} else { printf("  + "); } }
 
/** Création d'un polynome à N termes **/
void create_poly ( poly** head )
{
    int n;  int i;   float v;
    poly* P=NULL;
    poly* Q=NULL;
    printf("Quel est le degre de votre polynome ? ");  scanf("%d" , &n);
    *head=NULL;
    for (i=0;i<=n;i++)
    {
        printf("Coefficient du terme dont la puissance est %d " , i);   scanf("%f" , &v);
        P=allouer();
        aff_puiss(P,i);
        aff_coef (P,v);
        aff_adr(P,NULL);
        if (*head==NULL) { *head=P; } else { aff_adr(Q,P); }
        Q=P;
    }
}
 
/** Calculer la valeur du polynome pour une valeur donnée **/
float valeur (poly* P , float v)
{
    float result=0;
    while (P!=NULL)
    {
        result = result + (P->coef) * ( pow( v , P->puiss ) ) ;
        P=suivant(P);
    }
    return result;
}
 
/** Multiplication par un scalaire **/
void multi_scal (poly* P , float v)
{
    while (P!=NULL)
    {
        aff_coef( P , v * coef(P));
        P=suivant(P);
    }
}
Voilà mon fichier LIB.h qui contient ma structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
 
/** LLC des polynomes **/
typedef struct poly poly;
struct poly
{
    float coef;
    int puiss;
    poly* suiv;
};
 
/** Implementation de la machine abstraite des polynomes **/
poly* allouer ( ) ;
void liberer (poly* P) ;
void aff_coef (poly *P, float v) ;
void aff_puiss (poly *P, int v);
void aff_adr(poly *P, poly *Q) ;
float coef (poly *P) ;
int puiss(poly *P) ;
poly *suivant( poly *P) ;
 
/** Fonctions sur les polynomes **/
void multi_scal (poly* P , float v);
float valeur (poly* P , float v);
void show_poly(poly* head);
void show_mono (poly* head , int problem);
void create_poly ( poly** head );
void show_sign (float n);
j'ai fait la lecture d'un polynôme, l'affichage d'un polynôme, la valeur du polynôme pour un "X" donné , la multiplication d'un polynome par un scalaire.

j'ai un gros problème avec la DÉRIVATION et l' INTÉGRATION , ça fait deux jours que je tente de la faire mais pas de résultats

Aidez moi SVP