Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonctions

    24 novembre 2007 à 0:08:50

    bonjour,
    j'ai les questions suivantes :

    Question 1 : addition d’un polynôme et d’un monôme
    Ecrire une fonction additionMonome qui additionne le monôme représenté par les valeurs coefficient et exposant au polynôme passé en paramètre. Nous supposons que le polynôme est ordonné suivant l’ordre décroissant de ses exposants, l’addition doit conserver cet ordre.

    struct polynome* additionMonome (struct polynome* p, struct polynome* m);
    Exemple : (x3 + 2x + 1) + (−2x) = x3 + 1

    Question 2 : addition de polynômes
    En utilisant la fonction additionMonome, écrire une fonction additionPolynome. Les deux polynômes donnés
    en argument sont ordonnés suivant l’ordre décroissant de leurs exposants. L’addition doit conserver cet ordre, c’est-à-dire que le résultat de l’addition est un polynôme dont les monômes sont aussi ordonnées dans
    l’ordre décroissant des exposants.
    struct polynome* additionPolynome (struct polynome* p1, struct polynome* p2);

    j'ai écrit :

    1. struct polynome {
    2.   double coeff;
    3.   unsigned long exp;
    4.   struct polynome* suivant;
    5. };


    1. struct polynome* additionMonome (struct polynome* p, struct polynome* m) {
    2.        struct polynome* t=p,* y;
    3.        while(t != NULL){
    4.                         tous les cas
    5.                 }
    6.                       return p;                           
    7. }


    mais je ne trouve pas.
    comment écrivez-vous ces fonctions ?
    merci.
    • Partager sur Facebook
    • Partager sur Twitter
      24 novembre 2007 à 3:42:33

      1. struct polynome {
      2.   double coeff;
      3.   unsigned long exp;
      4.   struct polynome* suivant;
      5. };

      Comment comptes-tu gérer la partie constante du polyôme ?

      ---

      As-tu quand même réfléchi à la question avant de taper du code ?
      Si on prend cet exemple :

      <math>\(a%20%3D%20x%5E3%20%2B%202x%20%2B%201\)</math>
      <math>\(b%20%3D%20x%5E4%20-%203x\)</math>

      il faut imaginer un curseur dans chaque polynôme qui se déplace au fur et à mesure qu'on les parcourt.
      Au début il est là :
      <math>\(a%20%3D%20%7Cx%5E3%20%2B%202x%20%2B%201\)</math>
      <math>\(b%20%3D%20%7Cx%5E4%20-%203x\)</math>
      On ne s'arette que lorsqu'on arrive à la fin d'un des deux polynôme.

      A ce niveau, trois possibilités :
      -> l'exp. de a est supérieur
      -> l'exp. de b est supérieur
      -> ils sont égaux.

      ici, à ce stade, exp. de b > exp de a. Il faut donc le placer avant.
      Par un jeu d'échange de variable, on arrive là :
      <math>\(a%20%3D%20%7Cx%5E4%20%2B%20x%5E3%20%2B%202x%20%2B%201\)</math>
      <math>\(b%20%3D%20%7C-3x\)</math>

      Et pour finir, on se déplace au monôme suivant dans a :
      <math>\(a%20%3D%20x%5E4%20%2B%20%7Cx%5E3%20%2B%202x%20%2B%201\)</math>
      <math>\(b%20%3D%20%7C%20-3x\)</math>

      nouveau tour de boucle, à nouveau trois possibilités.
      comme exp de a > exp de b, on ne change rien, on se déplace juste encore dans a. Nouvelle situation :

      <math>\(a%20%3D%20x%5E4%20%2B%20x%5E3%20%7C%2B2x%20%2B%201\)</math>
      <math>\(b%20%3D%20%7C-3x\)</math>

      exp. de a == exp. de b => on ajoute coeff. de b à coeff. de a
      <math>\(a%20%3D%20x%5E4%20%2B%20x%5E3%20%7C-1x%20%2B%201\)</math>
      <math>\(b%20%3D%20%7C-3x\)</math>
      On passe au monôme suivant dans les deux polynômes :
      <math>\(a%20%3D%20x%5E4%20%2B%20x%5E3%20-1x%20%7C%2B1\)</math>
      <math>\(b%20%3D%20-3x%20%7C\)</math>

      b est NULL, on s'arrète.

      ---

      Avec ça, tu devrais pouvoir dégager un premier algo que tu pourras affiner ensuite. ( par exemple : Si on s'arrète car A est NULL mais qui reste des monôme dans B.. Si l'addition de deux coeff est nulle..)
      Prend le temps de bien réfléchir avant de commencer à coder ;)
      • Partager sur Facebook
      • Partager sur Twitter

      fonctions

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown