fonction polynome - C - Programmation
Marsh Posté le 11-04-2007 à 13:50:09
Il semble que ce soit un petit problème de conversion enter les entiers et les doubles.
Les conversions sont rarement automatiques en C. Il faut les indiquer.
Dans ce programme, je mettrais toutes les variables en double pour ne pas avoir de soucis, d'autant plus que de nos jours, avec les co-processeurs arithmétiques déjà inclus dans les microprocesseurs ordinaires, le gain de temps du traitement d'un entier par rapport à un double n'est plus du tout sensible.
Marsh Posté le 11-04-2007 à 13:50:59
donc par exemple au lieu de metre int a je met double a ?
Marsh Posté le 11-04-2007 à 13:57:48
Oui, mais en fait, c'est surtout dans la fonction poly() qu'il faut des doubles. Je comprends que les coefficients soient des entiers.
|
Marsh Posté le 11-04-2007 à 14:26:40
arf tjs pas un polynome come 3x² + 4x + 1
il me met -0.33333 comme solution
Marsh Posté le 11-04-2007 à 14:29:30
tu devrais initialiser ton d à 0...
Marsh Posté le 11-04-2007 à 14:30:42
ReplyMarsh Posté le 11-04-2007 à 14:33:23
ah ouai lol désolé j'avais pas vu merci.
autre question: comment je peux intégré l'autre solution dans la fonction à savoir -b-d/f ?
Marsh Posté le 11-04-2007 à 14:35:15
ouais mais même, initialise ton d à 0
Au moins tu es sur qu'il contient 0, et pas -878792
Marsh Posté le 11-04-2007 à 14:35:28
_darkalt3_ a écrit : -1/3 ne serait pas racine de ton polynome ? |
et comment à utiliser des coefficients double plutot que de caster 1000x
Marsh Posté le 11-04-2007 à 14:39:55
autre question: comment je peux intégré l'autre solution dans la fonction à savoir -b-d/f ?
et comment je peux avoir la solution sous forme de fraction ?
Marsh Posté le 11-04-2007 à 15:20:19
fabsolute a écrit : autre question: comment je peux intégré l'autre solution dans la fonction à savoir -b-d/f ? |
Tu ne peux pas avoir la solution sous forme de fraction. Il n'existe pas de type "fraction" en "C".
Mais rien ne t'empêche de créer ce type puis l'utiliser (c'est à dire créer les fonctions qui permettent d'additionner/soustraire/multiplier/diviser 2 fractions puis utiliser ces fonctions dès que t'en as besoin)
Ex:
typedef struct { |
Bon, ceci n'est qu'une ébauche pas vraiment optimisée. Il serait plus judicieux par exemple d'essayer de réduire les fractions avant de les additionner. On peut aussi gérer les négatifs, et plein d'autres trucs encore mais c'est pour que tu comprennes bien le principe. Bienvenue dans le C, le langage où il te faut d'abord créér les outils dont t'as besoin avant de pouvoir les utiliser...
Marsh Posté le 11-04-2007 à 15:20:45
http://www.cs.princeton.edu/introcs/91float/
point 17 entre autres
Marsh Posté le 11-04-2007 à 15:22:04
euh les fractions t'es gentil avec, mais à résoudre des trinômes, t'as quand même pas mal de chance de tomber sur des irrationels ...
Marsh Posté le 11-04-2007 à 13:44:49
Voila je suis débutant en programmation, j'ai essayer de faire un programme qui calcul les solution d'un poly du second degré
voici le code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "inf101.h"
#include <math.h>
double poly(int a, int b, int c)
{
int f= 2*a;
int d;
int e =b*b-4*a*c ;
{
if(e>0)
d = sqrt(e);
}
return (-b+d)/f;
}
int main(void)
{
printf("taper trois valeur a,b et c pour avoir un poly de type ax*x + bx + c:\n" );
int a=lire_flottant();
int b=lire_flottant();
int c=lire_flottant();
printf("votre polynome est %dx*x + %dx + %d:\n", a, b, c);
printf("les solutions sont :%f", poly(a,b,c));
}
le programme ce compile parfaitement mais par exemple si je prend 4x²+ 8x +2 il maffiche tout le temp comme solution 0.000000