[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 division avec virgule - Forum Excel
- Signe division clavier azerty ✓ - Forum Clavier
- Excel diviser par le nombre de cellules remplies ✓ - Forum Excel
- Sommeprod division - Forum Excel
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));