exercice sur les polynomes
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

exercice sur les polynomes



  1. #1
    invite5c6a01fc

    Exclamation exercice sur les polynomes


    ------

    bonjour tout le monde,
    j'ai fait un exercice sur les polynomes(la somme et le produit de deux polynomes p et q),et j'aimerais que vous m'aidiez svp,pour corriger ce code,si c possible...

    Code:
    #include<stdio.h
    #include<stdlib.h
    #include<alloc.h>
    //prototype de la fonction somme
    poly* somme_polynome(poly*,poly*);
    //prototype de la fonction produit
    poly* produit_polynome(poly*,poly*);
    //definition de la structure polynome
    typedef struct polynome
    {
    int degre;
    double* coef;
    }poly;
    main()
    {
    poly *p1,*p2,somme;
    
    printf("degre de p1:\n");
    scanf("%d",&p1.degre);
    printf("degre de p2:\n");
    scanf("%d",&p2.degre);
    
    for(i=0;i<=p1.degre+1;i++)
    {
    printf("les coefficients de p1:\n");
    scanf("%d",p1->coef[i]);
    }
    
    for(j=0;j<=p2.degre+1;j++)
    {
    printf("les coefficients de p2:\n");
    scanf("%d",p2->coef[j]);
    }
     
    printf("la somme de ces 2polynomes est:\n %d",somme_polynome(&p1,&p2));
    //comment afficher les 2polynomes p1 et p2 dans printf?
    printf("\nle produit de ces 2 polynomes est :%d",produit_polynome(&p1,&p2));
    
    return 0;
    }
    
    //définition de la fonction somme
    poly* somme_polynome(poly*p,poly*q)
    {
    poly* inter,pq;//pq:polynome somme de p+q
    int i,j;
    //je determine le degre de pq:polynome somme
    //le degre de pq est le grand degre de ces 2polynomes p et q
    if(p.degre<q.degre)
    {
    inter=p.degre;
    p.degre=q.degre;
    q.degre=inter;
    }
    pq.degre=p.degre;
    //je dois louer la memoire pour les coefficients de pq
    //le nombre de coef de pq=p.degre+1  +  q.degre+1  
    pq->coef=(double*)malloc( sizeof(double)*( pq.degre+1);
    
    //je dois remplir le tableau de coef de pq
    for(i=0;i<=q.degre;i++)
    //je commence d'abord par faire la somme des coef de degres plus petits 
    pq->coef[i]=p->coef[i]+q->coef[i];
    
    for(j=q.degre+1;j<=p.degre;j++)
    pq->coef[j]=p->coef[j];
    
    return pq;
    }
    
    //la fonction produit
    poly* produit_polynome(poly* p,poly* q)
    {
    
    int i,j,somme=0;
    poly* g,pfoisq;  //g un polynome intermediaire
    
    pfq.degre=p.degre+q.degre;
    pfq->coef=(double*)malloc(sizeof(double)*(pfq.degre+1));
    
    i=0;
    do
    {
    for(j=0;j<q.degre+1;j++)
     {
       g->coef[i]=p->coef[i]*q->coef[j];
       somme=somme+g->coef[i];
       pfq->coef[i]=somme;
     }
    i++;
    }
    while(i==p.degre+1)
    
    return pfq;
    }
    j'espère que c'est clair pour vous!
    dans l'attente de votre correction

    -----

  2. #2
    invitee840409b

    Re : exercice sur les polynomes

    Bonjour,

    De quel ordre est le problème ? Compilation, résultat, optimisation ?

    Cordialement,
    ProgVal

  3. #3
    invite5c6a01fc

    Question Re : exercice sur les polynomes

    salut,
    est ce que vous pouvez me dire si ce code en tant qu'algorithme est correct .?est ce que la méthode que j'ai utilisé pour trouver la somme et le produit de 2 polynomes est logique ou pas?

    merci pour compréhension

  4. #4
    invitee840409b

    Re : exercice sur les polynomes

    Tu as de la chance, j'ai eu mon cours de maths dessus il y a peu

    À propos de ceci :
    Code:
    typedef struct polynome
    {
    int degre;
    double* coef;
    }poly;
    Pourquoi n'as-tu mis qu'un seul coef, puisqu'il y en a degre+1 ?

  5. A voir en vidéo sur Futura
  6. #5
    invite2d7144a7

    Re : exercice sur les polynomes

    Bonjour,

    Sans aller bien loin, je vois déjà des erreurs ici:
    Code:
    main()
    {
    poly *p1,*p2,somme;
    
    printf("degre de p1:\n");
    scanf("%d",&p1.degre);
    printf("degre de p2:\n");
    scanf("%d",&p2.degre);
    - utilisation de pointeurs sans les avoir initialisés ==> boum

    - une fois ces pointeurs initialisés, pour adresser les champs de la structure, il faut faire par exemple p2->degre, OU *p2.degre, mais pas comme tu le fais (&p2.degre ==> passe l'adresse du pointeur lui-même, et le champ degre est donc une adresse invalide).

  7. #6
    polo974

    Re : exercice sur les polynomes

    C'est bizarre, dans la somme et le produit, tu alloues correctement le tableau des coefs, alors que c'est déjà dans le main que tu en as besoin pour les remplir...
    On n'a pas le droit de se servir d'un pointeur tant qu'il n'y a rien derrière...

    sans oublier d'allouer p1 et p2, ou de les déclarer en tant que variables et non pointeurs...
    Jusqu'ici tout va bien...

  8. #7
    Jack
    Modérateur

    Re : exercice sur les polynomes

    - utilisation de pointeurs sans les avoir initialisés ==> boum
    Entièrement d'accord
    - une fois ces pointeurs initialisés, pour adresser les champs de la structure, il faut faire par exemple p2->degre, OU *p2.degre, mais pas comme tu le fais (&p2.degre ==> passe l'adresse du pointeur lui-même, et le champ degre est donc une adresse invalide).
    Sauf que la fonction scanf utilise un passage de paramètres par adresse. Il faut donc faire:
    Code:
    scanf("%d",p1.degre);
    Achernar, il est de toi ce code? Si oui, soigne son indentation, c'est illisible.
    Quel intérêt de manipuler les p1 et p2 comme des pointeurs et pas tout simplement
    Code:
    poly p1, p2;
    A+
    Dernière modification par Jack ; 21/12/2009 à 09h35.

  9. #8
    Jack
    Modérateur

    Re : exercice sur les polynomes

    Citation Envoyé par ProgVal Voir le message
    Tu as de la chance, j'ai eu mon cours de maths dessus il y a peu

    À propos de ceci :
    Code:
    typedef struct polynome
    {
    int degre;
    double* coef;
    }poly;
    Pourquoi n'as-tu mis qu'un seul coef, puisqu'il y en a degre+1 ?
    Il n'y a pas qu'un seul coef, il y a juste un pointeur sur une liste de coefficients dont le nombre peut évoluer dynamiquement.

    Petite remarque en passant: avec un typedef, pas besoin de mettre un identificateur après struct.

    A+

Discussions similaires

  1. 1ère S : exercice sur les Polynômes
    Par invitee215cb44 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 18/10/2009, 12h13
  2. Exercice sur les polynomes
    Par invite56e53b8e dans le forum Mathématiques du collège et du lycée
    Réponses: 6
    Dernier message: 15/10/2007, 21h18
  3. Exercice sur les polynômes
    Par invite03b2f744 dans le forum Mathématiques du collège et du lycée
    Réponses: 4
    Dernier message: 26/09/2007, 21h41
  4. Exercice sur Polynômes et Produit scalaire
    Par inviteedb947f2 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 22/05/2007, 08h40
  5. pb sur les polynômes
    Par invited92c096f dans le forum Mathématiques du collège et du lycée
    Réponses: 17
    Dernier message: 06/11/2006, 14h09
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...