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 :

Produit de deux polynômes


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    université pasteur
    Inscrit en
    Février 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : université pasteur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Produit de deux polynômes
    Bonjour svp j'ai besoin de votre aide, j'ai fait une fonction qui calcule le produit de deux polynômes, la première et la deuxième partie du fonction marche mais la dernière "else" ne marche pas (quand les deux polynômes ont la même degré)

    Pour le calcule j'ai utilisé l'algorithme suivante:

    Formule mathématique

    avec "n" le degré du premier polynôme et "p" le degré du deuxième et "ai" et "bi" les coefficients des deux polynômes.


    La structure et les prototypes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
     typedef struct
     {
       int degre;
       float * coef;      
     }polynome;
     
     
     
       void affichage(polynome px);
       polynome creation_poly(int n);
       polynome produit_poly(polynome fx,polynome gx);


    Le main
    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
    int main()
    {
        polynome poly,poly1;
     
        printf("entrez la degre du premier polynome:\n");
        scanf("%d",&poly.degre);
        poly=creation_poly(poly.degre);
        poly=saisir_poly(poly.degre);
     
        printf("entrez la degre du deuxième polynome:\n");
        scanf("%d",&poly1.degre);
        poly1=creation_poly(poly1.degre);
        //remplace la ligne d après
        poly1=saisir_poly(poly1.degre);
     
     
        //poly.coef=calloc(poly.degre+1,sizeof(polynome));
     
     
     
     
     
        //int i;
        //for(i=0;i<poly.degre+1;i++){
        //printf("entrez le coefficients d ordre %d du polynome:\n",poly.degre-i);
        //scanf("%f",poly.coef+i);
       // }
     
     
     
        //printf("la polynome:\n");
       // for(i=0;i<poly.degre+1;i++)
        //printf("%.2fX^%d\t",*(poly.coef+i),poly.degre-i);
        //Affichage
       affichage(poly);
        printf("\n");
       affichage(poly1);
     
     
     
         //Calcul de la valeur d un polunome en x
        // float x,vx;
        // printf("\nCalcul de la valeur d un polunome en x:\n");
       // printf("entrez la valeur de x SVP:\n",x);
       // scanf("%f",&x);
        // vx=calcul_valeur(poly,x);
        //  printf(" x=%f\n",vx);
     
          //Calcul du derivé
          // printf("La polynome derive:\n");
        // polynome pdr=derive(poly);
        // affichage(pdr);
     
     
     
     
     
          //Le produit de deux polynomes 
          printf("\nLe produit  des deux polynomes:\n");
          polynome pp=produit_poly(poly,poly1);
          affichage(pp);
     
        system("pause");
        return 0;
        }



    fonction pour afficher une polynome
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void affichage(polynome px)
    {
         int i;
         for(i=0;i<px.degre+1;i++)
        printf("%.2fX^%d\t",*(px.coef+i),px.degre-i);
    Fonction ppour crée une polynome
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    polynome creation_poly(int n)
    {
     polynome px;
     px.degre=n;
     px.coef=calloc(px.degre+1,sizeof(float));
    return px;
     
     
             }


    et enfin la fonction Produit:
    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
     polynome produit_poly(polynome fx,polynome gx)
     
     
    {       int i,j;
             polynome hx=creation_poly(fx.degre+gx.degre);
     
     
     
     
     
    		 if(fx.degre>gx.degre)
    		{
    	       for(i=0;i<=hx.degre;i++)
     
     
                  { *(hx.coef+i)=0;
    		                  for(j=0;j<=i;j++)
     
                              *(hx.coef+i)+= *(gx.coef+j)*(*(fx.coef+(i-j)));
     
          	      }
            }
     
     
    		else if(gx.degre>fx.degre)          
             {          for(i=0;i<=hx.degre;i++)
                        { *(hx.coef+i)=0;
    		                     for(j=0;j<=i;j++)
     
                                  *(hx.coef+i)+= *(fx.coef+j)*(*(gx.coef+(i-j)));
     
                         }
     
             }
                else //Problème içi
                { for(i=0;i<=hx.degre;i++)
                 { *(hx.coef+i)=0;
    		    for(j=0;j<=i;j++)
     
               {  *(hx.coef+i)+= *(fx.coef+j)*(*(gx.coef+(i-j)));
               }
                       }
     
                }
     
     
     
     
     
              return hx;
             }

  2. #2
    Futur Membre du Club
    Homme Profil pro
    université pasteur
    Inscrit en
    Février 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : université pasteur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre réponse qui sert a rien(de la meerde), pour mon code il est très claire pour comprendre.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par foetus Voir le message
    Ton code c'est de la m*rd*
    Un simple "bonjour" à la place aurait été apprécié...
    Citation Envoyé par foetus Voir le message
    Édit 2: Ah flûte, tu as modifié ta formule mathématique comme par hasard
    Non ça c'est moi. Mais je dois reconnaitre qu'elle piquait bien les yeux.
    @idoune : pour les prochaines formules mathématiques, n'hésite pas à te servir des balises [LATEX] ... [/LATEX] du forum, elles sont là pour ça Tu pourras t'aider de ce site pour générer tes formules.

    À noter, le code est peut-être clair pour toi, mais il nous est difficile à lire non indenté comme cela, en particulier le dernier code de la fonction produit_poly.
    Un exemple simple : prend le code de cette même fonction et essaie de repérer le plus rapidement possible l'accolade } qui ferme celle de la ligne 12, ou autrement dit ce qui est exécuté lorsque l'on rentre dans le if(fx.degre>gx.degre) de la ligne qui précède.
    * interlude *
    Maintenant, même exercice sur le code qui suit, même code mais correctement indenté (la même accolade étant ici ligne 7) :
    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
    polynome produit_poly(polynome fx, polynome gx)
    {       
        int i,j;
        polynome hx = creation_poly(fx.degre + gx.degre);
     
        if(fx.degre > gx.degre)
        {
            for(i=0; i <= hx.degre; i++)
            { 
                *(hx.coef+i) = 0;
                for(j=0; j <= i; j++)
                    *(hx.coef+i) += *(gx.coef+j) * (*(fx.coef + (i-j)));
            }
        }
        else if(gx.degre > fx.degre)          
        {
            for(i=0; i <= hx.degre; i++)
            { 
                *(hx.coef+i) = 0;
                for(j=0; j <= i; j++)
                    *(hx.coef+i) += *(fx.coef+j) * (*(gx.coef + (i-j)));
            }
        }
        else
        { 
            for(i=0; i <= hx.degre; i++)
            {
                *(hx.coef+i) = 0;
                for(j=0; j <= i; j++)
                {  
                    *(hx.coef+i) += *(fx.coef+j) * (*(gx.coef + (i-j)));
                }
            }
        }
     
        return hx;
    }
    Convaincu de l'importance de l'indentation ?

    PS : évite aussi de mélanger les espaces et tabulations : cela peut donner un bon aperçu sur ton propre éditeur qui affiche les tabulations sur un certain nombre d'espaces, mais cela peut être différent sur un autre éditeur ou le forum (qui lui en prend 8). Sans vouloir lancer un débat, je te conseille perso exclusivement les espaces.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 631
    Points : 10 558
    Points
    10 558
    Par défaut
    Citation Envoyé par idoune Voir le message
    Merci pour votre réponse qui sert a rien(de la meerde)
    Ne soit pas aigri

    J'ai testé et ton code devrait fonctionner (sans parler du copié-collé et du faut de gérer 3 cas au lieu de 2): donc je pense que tu as un problème ailleurs.

Discussions similaires

  1. [Turbo Pascal] Addition de deux polynômes avec liste chaînée
    Par Ecquini dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 01/11/2011, 19h11
  2. Produit de deux ensembles
    Par soft0613 dans le forum Scheme
    Réponses: 12
    Dernier message: 23/10/2007, 20h23
  3. Produit de deux polynomes
    Par Tulas dans le forum Caml
    Réponses: 3
    Dernier message: 02/05/2007, 09h44
  4. comment calculer le produit de deux nombres en PHP
    Par batalich dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2007, 09h02
  5. [Tableaux] produit de deux tableaux
    Par vivian dans le forum Langage
    Réponses: 8
    Dernier message: 25/07/2006, 19h52

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