Bonjour,
Mon problème est le suivant, j'ai un projet d'informatique pour mon IUT à rendre très bientôt, je dois réaliser une bibliothèque de fonctions permettant l'étude complète d'un polynôme, c'est à dire l'obtention de ses racines, de son signe et de ses variations. J'ai commencé le programme en ajoutant toutes les fonction dont j'aurais besoin, mais ensuite, au vue de mes capacités en programmation, si une personne pourrait m'aider sur la suite du programme...Merci d'avance
Voila le début que j'ai effectué :
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
typedef unsigned int uint;
struct Polynome
{
uint Degre;
double *Coefficients;
};
// Fonctions donnees
double Pow(double x, uint p);
struct Polynome *Allocate(unsigned int degre);
void Delete(struct Polynome *p);
void Display(struct Polynome *p);
struct Polynome *Multiply(struct Polynome *p1, struct Polynome *p2);
// Fonctions a completer
struct Polynome *Prompt(void);
struct Polynome *Load(char *filename);
void Save(struct Polynome *p, char *filename);
double Eval(struct Polynome *p, double x);
uint Roots(struct Polynome *p, double x1, double x2, double *out);
struct Polynome *Derivate(struct Polynome *p);
void Sign(struct Polynome *p, double x1, double x2);
void Variation(struct Polynome *p, double x1, double x2);
double Pow(double x, uint p)
{
uint i;
double out = 1.;
for(i=0;i<p;i++)
{
out *= x;
}
return out;
}
struct Polynome *Allocate(unsigned int degre)
{
struct Polynome *out;
out = (struct Polynome *) malloc(sizeof(struct Polynome));
out->Degre = degre;
out->Coefficients = (double *) malloc((degre + 1) * sizeof(double));
return out;
}
void Delete(struct Polynome *p)
{
if(p)
{
free(p->Coefficients);
free(p);
}
}
void Display(struct Polynome *p)
{
uint i;
printf("%lf", p->Coefficients[0]);
for(i=1;i<=p->Degre;i++)
{
if(p->Coefficients[i] < 0.)
{
printf(" - %lf x", -p->Coefficients[i]);
}
else
{
printf(" + %lf x", p->Coefficients[i]);
}
if(i > 1)
{
printf("^%d", i);
}
}
}
struct Polynome *Multiply(struct Polynome *p1, struct Polynome *p2)
{
struct Polynome *out;
uint i, j;
out = Allocate(p1->Degre + p2->Degre);
for(i=0;i<=out->Degre;i++)
{
out->Coefficients[i] = 0.;
}
for(i=0;i<=p1->Degre;i++)
{
for(j=0;j<=p2->Degre;j++)
{
out->Coefficients[i+j] += p1->Coefficients[i] * p2->Coefficients[j];
}
}
return out;
}
struct Polynome *Prompt(void)
{
struct Polynome *out;
// A COMPLETER
return out;
}
struct Polynome *Load(char *filename)
{
struct Polynome *out;
// A COMPLETER
return out;
}
void Save(struct Polynome *p, char *filename)
{
// A COMPLETERS
}
double Eval(struct Polynome *p, double x)
{
double out;
// A COMPLETER
return out;
}
uint Roots(struct Polynome *p, double x1, double x2, double *out)
{
uint n;
// A COMPLETER
return n;
}
struct Polynome *Derivate(struct Polynome *p)
{
struct Polynome *out;
// A COMPLETER
return out;
}
void Sign(struct Polynome *p, double x1, double x2)
{
// A COMPLETER
}
void Variation(struct Polynome *p, double x1, double x2)
{
// A COMPLETER
}
int main(int argc, char **argv)
{
// A COMPLETER
return 0;
}
Configuration: Windows Vista
Firefox 2.0.0.14