[C] Division de polynome
Jonathan
-
levil -
levil -
Bonjour,
J'ai un petit projet à faire pr un cours, je dois créer des fonctions pour utiliser les polynômes, additions, multiplications, division etc.
Je bloque sur la fonction division.
Voila mon problème:
La fonction fonctionne, mais je n'arrive pas afficher les résultats.
Si je fais retourner à mon fonction un seul polynome, cela fonctionne, mais je dois créer une fonction qui renvoie deux polynome. Mais bizarrement je n'y arrive pas.
Voila mon code, je ne poste que les parties utilies :
*****
Dans polynome.h
********************************
Si vous pouvez m'aider je vous en serai tres reconnaissant :)
Merci
Jonathan
J'ai un petit projet à faire pr un cours, je dois créer des fonctions pour utiliser les polynômes, additions, multiplications, division etc.
Je bloque sur la fonction division.
Voila mon problème:
La fonction fonctionne, mais je n'arrive pas afficher les résultats.
Si je fais retourner à mon fonction un seul polynome, cela fonctionne, mais je dois créer une fonction qui renvoie deux polynome. Mais bizarrement je n'y arrive pas.
Voila mon code, je ne poste que les parties utilies :
*****
Dans polynome.h
struct poly { int degree; float* coefficient; }; typedef struct poly poly; struct twopoly { int ddegree; float* dcoefficient; int rdegree; float* rcoefficient; }; typedef struct twopoly twopoly; twopoly* dividep(poly*,poly*);
********************************
#include <stdio.h> #include "polynome.h" main() { node *head,*p,*q; poly *p1,*p2,*p3,*p4; twopoly *res ; res = dividep(p1,p2); p3 = (poly*)malloc(sizeof(poly)); p3->degree = res -> ddegree; p3->coefficient = res -> dcoefficient; //montre le resultat printf("Le resultat est:"); montre(p3); //---------------------- void montre(poly* p) { int i; printf("--> "); for(i = p->degree; i > 0; i--) { if(p->coefficient[i] != 0) printf("%.2f(X^%i) + ",p->coefficient[i],i); } printf("%.2f\n",p->coefficient[0]); } //--------------------------------- twopoly* dividep(poly* p1, poly* p2) { poly *save, *p; twopoly *result; int i, n, a1, a2; //initialization p = (poly*)malloc(sizeof(poly)); p->degree = p1->degree - p2->degree; p->coefficient = (float*)malloc(sizeof(float)*(p->degree+1)); //initialization to zero for(i = p->degree; i >= 0; i--) p->coefficient[i] = 0; a2 = p2->coefficient[p2->degree]; while (p1->degree >= p2->degree) { n = p1->degree - p2->degree; a1 = p1->coefficient[p1->degree]; for(i = p2->degree; i >= 0; i--) p1->coefficient[i+n] -= ((a1/a2)*(p2->coefficient[i])) ; p->coefficient[n] += a1/a2; p1=calculer(p1); } result = (twopoly*)malloc(sizeof(twopoly)); result->ddegree = p->degree; result->dcoefficient = (float*)malloc(sizeof(float)*(p->degree+1)); result->rdegree = p1->degree; result->rcoefficient = (float*)malloc(sizeof(float)*(p1->degree+1)); return result ; }
Si vous pouvez m'aider je vous en serai tres reconnaissant :)
Merci
Jonathan
A voir également:
- [C] Division de polynome
- Microsoft skype division - Télécharger - Téléphonie & Visio
- Excel diviser par le nombre de cellules remplies ✓ - Forum Excel
- Excel division avec virgule - Forum Excel
- La vidéo à télécharger va 5 fois plus vite que sa vitesse normale. divisez sa vitesse par 5 pour rétablir sa vitesse normale. après cette opération, combien de papillons figurent entre la 17e et la 18e seconde ? ✓ - Forum Montage et acquisition vidéo
- Division euclidienne ti 83 - Forum Logiciels
2 réponses
salut,
rapidement sans detailler le code
Je trouve etrange que tu ne remplisse pas les champs alloues :
result->dcoefficient
et
result->rcoefficient
tu fais ton malloc ... mais tu ne mets rien dedans ??
result = (twopoly*)malloc(sizeof(twopoly));
result->ddegree = p->degree;
result->dcoefficient = (float*)malloc(sizeof(float)*(p->degree+1));
result->rdegree = p1->degree;
result->rcoefficient = (float*)malloc(sizeof(float)*(p1->degree+1));
rapidement sans detailler le code
Je trouve etrange que tu ne remplisse pas les champs alloues :
result->dcoefficient
et
result->rcoefficient
tu fais ton malloc ... mais tu ne mets rien dedans ??
result = (twopoly*)malloc(sizeof(twopoly));
result->ddegree = p->degree;
result->dcoefficient = (float*)malloc(sizeof(float)*(p->degree+1));
result->rdegree = p1->degree;
result->rcoefficient = (float*)malloc(sizeof(float)*(p1->degree+1));