RÉSOLUTION AUTOMATIQUE DES TRINOMES DU SECOND DÉGRÉ.

Signaler
Messages postés
37
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
11 avril 2010
-
Messages postés
7
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
18 août 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50381-resolution-automatique-des-trinomes-du-second-degre

Messages postés
7
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
18 août 2009

Perso voici mon code , j'ai mis pas mal de truc inutile dedans , c'est cool pour se familiariser avec le C.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define carre(x) x * x//Macro pour le Carré de X.
#define racine(x) sqrt(x)//Macro pour la racine-carré , c'est plus beau.

int main()
{

double a,x,b,c,delta = 0 ;
double *PointeursurA = &a;
double *PointeursurB = &b;
double *PointeursurC = &c;
printf ("Recsolution d'ecquation du type ax%c + bx + c par lemuria.\n",0xFD);
printf ("Une equation du second degre est de la forme ax%c + bx + c = 0 \n Veuillez indiquer A \a : ",0xFD);//On indique A
scanf("%lf", &a);
printf("L'adresse de la variable A est : %d \n", &PointeursurA);
printf("Valeur de A (pointeur) : %.2lf \n", *PointeursurA);

printf (" Veuillez indiquer B \a: ");
scanf("%lf", &b);
printf("L'adresse de la variable age est : %d \n", &b);
printf("Valeur de B (pointeur) : %.2lf \n", *PointeursurB);

printf (" Veuillez indiquer C \a : ");//On Indique C
scanf("%lf", &c);
printf("Valeur de C (pointeur) : %.2lf \n", *PointeursurC);
printf("L'adresse de la variable age est \a : %d \n", &c);

printf("\n \a\a\a\a Resume\n A = %.2lf , B = %.2lf et C = %.2lf \n \n",a,b,c);// On resume la situation ^^
delta = carre(b);
printf ("B %c = %.2lf \n \n", 0xFD,delta );
delta = delta - (4 * ((a) * (c)));
printf (" B%c-4ac = %.2lf \n \n", 0xFD, delta );
if ( delta < 0)
{
printf ("L'equation n'admet aucune solution.\n");
system("PAUSE");
}
else if ( delta == 0)
{
printf ("L'equation admet une solution. ",b,a );
x = ( (- (b)) / (2 * a)) ;
printf("X= %.2lf \n",x);
system("PAUSE");
}
else if ( delta > 0)
{
printf ("L'equation admet 2 solution.\n Premiere solution \n",b,delta );
x = ( -(b) + (racine(delta))) / (2*a );
printf("X= %.2lf \n",x);#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define carre(x) x * x//Macro pour le Carré de X.
#define racine(x) sqrt(x)//Macro pour la racine-carré , c'est plus beau.

int main()
{

double a,x,b,c,delta = 0 ;
double *PointeursurA = &a;
double *PointeursurB = &b;
double *PointeursurC = &c;
printf ("Recsolution d'ecquation du type ax%c + bx + c par lemuria.\n",0xFD);
printf ("Une equation du second degre est de la forme ax%c + bx + c = 0 \n Veuillez indiquer A \a : ",0xFD);//On indique A
scanf("%lf", &a);
printf("L'adresse de la variable A est : %d \n", &PointeursurA);
printf("Valeur de A (pointeur) : %.2lf \n", *PointeursurA);

printf (" Veuillez indiquer B \a: ");
scanf("%lf", &b);
printf("L'adresse de la variable age est : %d \n", &b);
printf("Valeur de B (pointeur) : %.2lf \n", *PointeursurB);

printf (" Veuillez indiquer C \a : ");//On Indique C
scanf("%lf", &c);
printf("Valeur de C (pointeur) : %.2lf \n", *PointeursurC);
printf("L'adresse de la variable age est \a : %d \n", &c);

printf("\n \a\a\a\a Resume\n A = %.2lf , B = %.2lf et C = %.2lf \n \n",a,b,c);// On resume la situation ^^
delta = carre(b);
printf ("B %c = %.2lf \n \n", 0xFD,delta );
delta = delta - (4 * ((a) * (c)));
printf (" B%c-4ac = %.2lf \n \n", 0xFD, delta );
if ( delta < 0)
{
printf ("L'equation n'admet aucune solution.\n");
system("PAUSE");
}
else if ( delta == 0)
{
printf ("L'equation admet une solution. ",b,a );
x = ( (- (b)) / (2 * a)) ;
printf("X= %.2lf \n",x);
system("PAUSE");
}
else if ( delta > 0)
{
printf ("L'equation admet 2 solution.\n Premiere solution \n",b,delta );
x = ( -(b) + (racine(delta))) / (2*a );
printf("X= %.2lf \n",x);
printf ("Deuxieme solution \n");
x = ( -(b) - (sqrt(delta) )) / (2*a );
printf("X= %.2lf \n",x);
system("PAUSE");
}
return 0 ;
}
Messages postés
6
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
25 mai 2009

Sympa comme code mais tu pourrais l'améliorer pour des résolutions avec discriminant négatif...
Messages postés
1
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
30 juillet 2009

Merci, il est vrai qu'il manque pas mal de chose. Mais j'était tellement pressé de poster mon premier code que j'ai peut-être un peu baclé certaines parties :/
Merci encore pour ces idées d'améliorations
Messages postés
37
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
11 avril 2010

qq remarques :
Fonction polynome du second degre : f(x) = ax^2 + bx + c, f(x) : R->R.
(a,b,c) appartient a R donc a,b,c doit-etre de type float ou double (pour la precision).
Ensuite il faut construire un bon algorithme de resolution et cela passe par la decomposition des actions complexes.

algorithme :

fonction discriminant(entree Reel a, entree Reel b, entree Reel c) retourne Reel
debut
retourner ( b * b - 4 * a * c );
fin

// Solve ax^2 + bx + c = 0
// x0 : premiere racine
// x1 : deuxieme racine
// renvoie vrai si des solutions existe dans R
// renvoie faux s'il n'existe pas de solutions dans R
fonction resoudre(entree Reel a, entree Reel b, entree Reel c, sortie Reel x0, sortie Reel x1) retourne Booleen
debut
b := faux;

si a = 0 alors
lever_exception();
fin si;
delta := discriminant(a, b , c);
si delta >= 0 alors
b := vrai;
x0 = (-b - sqrt(delta)) / (2*a);
x1 = (-b + sqrt(delta)) / (2*a);
sinon
b := faux;
fin si;
retourner ( b );
fin