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 :

polynomes creux et les listes doublements chainées


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 15
    Points
    15
    Par défaut polynomes creux et les listes doublements chainées
    bonsoir a tous, j vient de faire un projet en c" representation des polynomes creux avec les listes doublements chainée. ya un problème mais je sais pas comment le corrigeroops:. svp pouvez vous m'aider.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 15
    Points
    15
    Par défaut
    main: test_poly

    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 <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
      {int i;
       ppoly pt;
       do{
       printf("\n ---------------------  MENU  --------------------- \n");
        printf("\n 1 : suppretion d'un monome a partir de son degrer");
       printf("\n 2 : multiplication d'un polynome par un scalaire(entier)");
       printf("\n 3 : multiplication d'un polynome par un monome");
       printf("\n 4 : addition de deux polynome");
       printf("\n 0 : quité le programme");
       printf("\n\n =====> Donnez votre choix :",i);
       scanf("%d",&i);
       switch(i){
     
              case 1:suppr();
                     break;
              case 2:tete mul_scalaire(ppoly pt,int a);
                     break;
              case 3:tete mul_monome(ppoly pt);
                     break;
              case 4:tete add(ppoly pp,ppoly pt);
                     break;
              }
        }while(i!=0);
        getch();	
      return 0;
    }
    polly.h

    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
    #ifndef __Poly
    #define __Poly
     
     typedef struct monome { int deg;
                     int cof;
                     struct monome *next;
                     struct monome *pred;
                     }poly;
     
     typedef poly* ppoly;
     
    typedef struct Tete{ ppoly ptg;
                    ppoly ptd;
                    }tete;
    tete t;
    tete t1;
    tete t2;
    tete h;
     
     
    tete suppr();
    tete mul_scalaire(ppoly pt,int a)
    tete mul_monome(ppoly pt);
    tete add(ppoly pp,ppoly pt);
     
    #endif
    poly.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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    #include<stdio.h>
    #include <stdlib.h>
    #include "poly.h" 
     
     
    // supprimer monome d'un polynome
    tete suppr(){ppoly pp,pc,pn;
         int a;
         pp=t.ptg;
         printf("\n ENTRER LE DERGER DE MONOME A SUPPRIMER\n",a); 
         scanf("%d",&a);   
         if(pp==NULL) printf("\n ERREUR .");
         else {while(pp!=NULL){if(pp->deg==a){pc=pp->pred;
                                              pn=pp->next;
                                              if(pc==NULL)t.ptg=pn;
                                              else pc->next=pn;
                                              if(pn==NULL)t.ptd=pc;
                                              else pn->pred=pc;
                                              free(pp);
                                              return t;}
                               else pp=pp->next;               
                              }
               if(pp==NULL){pc=pp->pred;
                            pc->next=NULL;
                            t.ptd=pc;
                            free(pp);
                            return t;}
     
              }printf("_n le monome que vous voulez supprimer n'existe pas");
              return t;
         }
     
    //multiplication d'un polynome par un scalaire     
     
    tete mul_scalaire(ppoly pt,int a){
         ppoly pp;
         int a;
         pp=t.ptg;
         printf("donner la valeur de a");
         scanf("%d",&a);
         if(pp==NULL) printf("erreur: polynome est nule");
         else {
              while(pp!=NULL)
                             {
                                      pp->cof=(pp->cof)*a;
                                      pp=pp->next;
                                      return t;
                                      }
              if(pp==NULL) printf("operation effectue");
              }
         return t;
         }
     
    // multiplication d'un polynome par un monome
     
     
    tete mul_monome(ppoly pt){
         ppoly pp,pt;
         pp=t.ptg;
         if(pp==0) printf("erreur: polynome nule ");
         else {
              while(pp!=NULL)
                         {
                                   (pp->cof)*=(pt->cof);
                                   (pp->deg)+=(pt->deg);
                                   pp=pp->next;
                                   return t;
                                   }
              if(pp==NULL) printf("operation effectué");
              }
         return t;
         }
     
    // addition de deux polynome
     
    tete add(ppoly pp,ppoly pt){
         ppoly pp,pt,pc;
         pp=t1.ptg;
         pt=t2.ptg;
         pc=t.ptg;
         pc=NULL;
         while(pp!=NULL || pt!=NULL)
                        {
                                    if(pp->deg=pt->deg)
                                          {
                                                       pc->cof=(pp->cof)+(pt->cof);
                                                       pc->deg=pp->deg;
                                                       pp=pp->next;
                                                       pt=pt->next;
                                                       return t;
                                                       }
                                          else{
                                               if(pp->deg>pt->deg)
                                                    {
                                                                  pc->cof=pp->cof;
                                                                  pc->deg=pp->deg;
                                                                  pp=pp->next;
                                                                  return t;
                                                                  }
                                               else {
                                                                  pc->cof=pt->cof,
                                                                  pc->deg=pt->deg;
                                                                  pt=pt->next;
                                                                  return t;
                                                                  }
                                               }
                            if(pp==NULL) return t2;
                            if(pt==NULL) return t1;
                        }
         return t;
         }

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Peux-tu nous donner plus de précision sur la nature du ou des problème(s) que tu rencontres. N'oublie pas d'éditer ton message précédent en ajoutant les base de code pour rendre ton code source avec indentation et coloration syntaxique.

    Avec mes meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Quelques remarques rapides :

    1- test_poly.c devrait inclure "polly.h" pour avoir la définition de ppoly

    2- On n'appelle pas les fonctions de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              case 2:tete mul_scalaire(ppoly pt,int a);
                     break;
              case 3:tete mul_monome(ppoly pt);
                     break;
              case 4:tete add(ppoly pp,ppoly pt);
    ici ce sont des prototypes de fonctions, pas des appels.

    3- polly.h :
    lignes 15-18 : On ne doit pas définir de variables dans un .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tete t;
    tete t1;
    tete t2;
    tete h;
    ligne 22 il manque un ; pour terminer le prototype
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. Question sur les listes doublement chainées.
    Par entropie67 dans le forum C
    Réponses: 2
    Dernier message: 09/02/2015, 15h12
  2. Butte sur un code sur les listes doublement chainées
    Par minibus dans le forum Débuter
    Réponses: 2
    Dernier message: 05/08/2009, 11h35
  3. Problème sur les listes doublement chainée
    Par Traouspont dans le forum C
    Réponses: 5
    Dernier message: 05/01/2007, 12h02
  4. Liste doublement chainée
    Par sorry60 dans le forum C
    Réponses: 23
    Dernier message: 03/12/2005, 17h12

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