IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Polynômes avec des listes chainées


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Polynômes avec des listes chainées
    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

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Bonsoir,

    Citation Envoyé par yahia.ntic Voir le message
    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.
    Un polynôme n'est que la somme de différentes puissances de x accompagnées chacune de leur coefficient. De là, les seules choses dont il faut se souvenir en mathématiques sont que (xⁿ)' = n⋅xⁿ⁻¹, d'une part, et que la dérivée d'une somme est égale à la somme des dérivées (de ses termes). La dérivée d'un produit est un tout petit peu plus subtile mais lorsque l'un des termes est le coefficient (constant) de cette expression, on montre assez facilement qu'on peut confondre les deux sans faire plus de calculs, soit (m⋅xⁿ)' = mn⋅xⁿ⁻¹.

    Donc, lorsque tu veux dériver ton polynôme :

    — Le terme de degré 0 passe à la trappe ;
    — Tu multiplies le coefficient de chacun des autres termes par son degré ;
    — Tu décrémentes ce degré.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/04/2009, 19h33
  2. Probleme avec une liste chainée
    Par apen2k2 dans le forum C
    Réponses: 7
    Dernier message: 14/12/2006, 16h31
  3. petit probleme avec une liste chainée
    Par kamouminator dans le forum C
    Réponses: 26
    Dernier message: 06/11/2006, 20h18
  4. Réponses: 7
    Dernier message: 22/09/2006, 15h52
  5. Problème avec des listes et des variables
    Par Knuckles dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2006, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo