Procédure Affipoly
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Procédure Affipoly



  1. #1
    lolo1546

    Procédure Affipoly


    ------

    Bonjour
    J'ai un petit probleme dans ma procédure Afficher un polynome
    sachant que j'ai comme types :

    Code:
    #define LMAX 20
    
    typedef struct{
        float coeff;
        int degre;
    }Monome;
    
    typedef struct{
         int longueur;
         Monome T[LMAX];
    }Polynome;
    
    
    void affpol(Polynome P) {
        int i;
       
        printf("IMPLEMENTATION TABLEAU X^6+1:\n");
    
        printf("%6.1f*X^%6.1d",P.T[0].coeff,P.T[0].degre);
        for(i=1; i<P.longueur; i++){
            if(P.T[i].coeff>=0){
                printf("+%6.1f*X^%6.1d",P.T[i].coeff,P.T[i].degre);
    
            }
        }
    }
    lors de l'affichage il y a une erreur mais je n'arrive pas à trouver mon erreur
    cordialement lolo

    -----
    Dernière modification par JPL ; 24/08/2015 à 14h17. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    katmai

    Re : Procédure Affipoly

    Salut,

    C'est le jeu des devinettes ? Qu'est ce que tu comptes obtenir?

    Quelques commentaires quand même:
    - Je passerais le Polynome par pointeur dans affpol.
    - Le membre degre doit être "unsigned int" (voir la définition d'un polynome)
    - Tu n'affiches pas les coefficients négatif.
    - Il te manque un printf("\n"); tout à la fin ça peut paraitre con mais ça lance le flush du buffer de sortie.

    A+

    EDIT:
    - J'aurais dis fonction affipoly et non pas procédure mais cela n'engage que moi .
    Dernière modification par katmai ; 24/08/2015 à 09h23.

  3. #3
    lolo1546

    Re : Procédure Affipoly

    D'accord merci pour ton commentaire

  4. #4
    lolo1546

    Re : Procédure Affipoly

    Bonjour je voudrais savoir si quelqu'un pourrait me donner quelque indication à propos de ma procédure add(P1,P2, *P3) qui est la suivante
    sachant que mon type est le suivant
    Type Monome:Type Composé de :
    coeff:reel;
    degre:entier;

    type Polynome:Type compose de :
    T[LMAX]: Monome;
    Longueur: entier;



    voici ma procédure

    Code:
    void add(Polynome P1,Polynome P2, Polynome *P3) { //Addition de deux polynômes
     int i;
     int j;
     int k;
    
     if((P1.longueur + P2.longueur)>LMAX){
        printf("erreur trop element:\n");
     }else{
         i = 0;
         j = 0;
         k = 0;
        if(degre(P1) > degre(P2)){
            do{
                (*P3).T[k].degre = P1.T[i].degre;
                (*P3).T[k].coeff = P1.T[i].coeff;
                i= i+1;
                k= k+1;
            }while(P1.T[i].degre == P2.T[j].degre);
        }else {
            do{
                (*P3).T[k].degre = P2.T[j].degre;
                (*P3).T[k].coeff = P2.T[j].coeff;
                j= j+1;
                k= k+1;
            }while(P1.T[i].degre == P2.T[j].degre);
        }
     }
    il affiche un résultat mais ce n'est pas le bon
    cordialement
    lolo
    Dernière modification par lolo1546 ; 29/08/2015 à 05h27.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Procédure Affipoly

    je ne vois pas la façon dont tu détermines la taille du polynôme résultat avant l'appel de la fonction. A mon avis, il faut que tu fasses l'allocation mémoire dans la focntion.

    En passant pourquoi ne pas transformer ta procédure en véritable fonction en retournant le pointeur du polynôme résultat au lieu de le passer en paramètre?

    Autre remarque: quel est le langage utilisé? C? C++?

    Et enfin, comme cela te l'a été indiqué plus haut, pour des données "complexes", il est préférable de passer un pointeur sur les paramètre afin d'éviter la copie de celles-ci dans la fonction.

  7. #6
    katmai

    Re : Procédure Affipoly

    Le gros soucis de ton truc c'est que LMAX est le nombre de monôme.
    Personnellement j'aurais plutôt mis une limite sur le degré max et non pas sur le nombre de monôme.

    Du coup c'est pas simple et ça sent l'usine à gaz.
    Ton début de fonction P1.longueur + P2.longueur est faux... Un exemple:
    P1 = 1 + x + x2; longueur = 3
    P2 = 2 + x + x3; longueur = 3
    Tu ajoutes les deux la "longueur" sera de 4 et non pas de 6..

    Ensuite que renvoi la fonction degre()?
    Je sens que c'est pas juste.. Pour un i,j donnée tu as 3 possibilités à implémenter:
    P1.T[i].degre == P2.T[j].degre
    P1.T[i].degre < P2.T[j].degre
    P1.T[i].degre > P2.T[j].degre
    Mais il faut aussi vérifier que i et j soit inférieur à la longueur du polynôme!

    Sinon comme l'a répété Jack essaye de passer les gros paramètres par pointeur ton programme sera plus rapide
    même si sans doute c'est pas trop grave ici... C'est juste une bonne manière de procéder.
    Pour accéder aux membres des structures en pointeurs "P3->" est préféré à "(*P3).".

    A+
    Dernière modification par katmai ; 29/08/2015 à 16h11.

  8. #7
    lolo1546

    Re : Procédure Affipoly

    En faite le probleme c'est un projet que je dois faire sur les polynômes sous 2 representations qui sont: chaîné (pointeur) et contiguë (tableau) et pour l'instant j'essaye de terminer sur la representation contiguë .
    A propos du debut d'accord j'ai compris merci et pour la fonction degre c'est une fonction qui rend le degre d'un polynômes
    Cordialement

  9. #8
    Jack
    Modérateur

    Re : Procédure Affipoly

    J'ai un problème avec la façon dont tu as représenté un polynôme de manière contiguë. Si les coefficients sont stockés dans un tableau, que fais-tu des coefficients nuls? Sont-ils traités comme les autres ou tu ne stockes que les coeff non nuls?

  10. #9
    lolo1546

    Re : Procédure Affipoly

    en effet je n'arrive pas trop à comprendre le projet car le programme principale à était déjà fait par le prof dont-il y a la mise en oeuvre les polynômes de Tchebychev ce qu'on doit faire seulement c'est d'écrire les procédures

  11. #10
    Jack
    Modérateur

    Re : Procédure Affipoly

    Tant qu'on n'aura pas la réponse à ma question, je ne vois pas comment on pourra avancer.

  12. #11
    katmai

    Re : Procédure Affipoly

    Si les coefficients sont stockés dans un tableau, que fais-tu des coefficients nuls? Sont-ils traités comme les autres ou tu ne stockes que les coeff non nuls?
    À mon avis les coefficients nuls ne sont pas stockés, sinon je vois pas l'intérêt de la variable degre dans monôme.

    A+

  13. #12
    Jack
    Modérateur

    Re : Procédure Affipoly

    C'est ce à quoi je voulais arriver: ce champ est-il indispensable?

    Je me trompe peut-être, mais je ne trouve pas très intéressant de ne pas stocker les termes nuls:
    - la taille du tableau étant fixe, il va falloir faire plusieurs vérifications avant de faire la moindre opération pour être sûr de ne pas déborder
    - dès qu'on va vouloir ajouter un coefficient d'un degré non encore présent dans le polynôme, il va falloir décaler tous ses successeurs, ce qui n'est pas très efficace. C'est d'ailleurs tout l'intérêt des listes chainées, mais comme là on travaille sur des tableaux ...

    Bref, avant d'éviter de perdre du temps pour la résolution du problème qui n'est pas, si ça se trouve, autant partir d'un cahier des charges bien défini.

  14. #13
    lolo1546

    Re : Procédure Affipoly

    Oui en effet les coefficients nuls ne sont pas stockés
    "cahier de charge bien définit" je ne comprend pas ??

    cordialement
    lolo

  15. #14
    Jack
    Modérateur

    Re : Procédure Affipoly

    Citation Envoyé par lolo1546 Voir le message
    "cahier de charge bien définit" je ne comprend pas ??
    l'énoncé précis de ton exercice.

    Mais puisque tu affirmes que les coefficients nul ne sont pas mémorisés, j'ai ma réponse.
    Du coup, je ne vois pas trop l'intérêt d’utiliser un tableau. Mais puisque c'est imposé ...


    il affiche un résultat mais ce n'est pas le bon
    Tu peux trouver ce qui ne fonctionne pas en utilisant un debugger: en effet, en exécutant ta fonction en pas à pas et en visualisant la valeur des variables au fur et à mesure, tu vas bien voir à partir de quel moment ton programme commence à déconner.

  16. #15
    lolo1546

    Re : Procédure Affipoly

    daccord je vais le faire
    merci

Discussions similaires

  1. La procedure APB
    Par invitefe34fc15 dans le forum Orientation après le BAC
    Réponses: 25
    Dernier message: 05/12/2012, 17h45
  2. la procedure
    Par invite5e28dacd dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 25/07/2012, 22h36
  3. Procedure APB
    Par invite5dd3bd23 dans le forum Orientation après le BAC
    Réponses: 4
    Dernier message: 10/03/2012, 13h50
  4. procédure nettoyage
    Par invite37101772 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 2
    Dernier message: 19/03/2011, 22h33
  5. Procédure sur Maple
    Par invite9a322bed dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 29/12/2009, 13h31