Aide sur mon code
segawahabwade
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
je voudrais un aide sur ce programme suivant, je suis un débutant de cette module. Merci
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(){
float X1 , X2 , X0, a , b , c , delta, i;
printf("donner les coefients de l'equation \n");
scanf("%lf %lf %fl", &a, &b, &c);
if(a == 0 && b == 0 && c == 0 ){
printf("tous réels est solution \n");}
else {
if( a == 0){
X1 = -c/b;
printf("la solution est %lf , X1 \n");}
delta = (b*b) - (4*a*c);
if(delta == 0){ X0 == -b/(2*a) ;
printf(" On une racine double qui est %lf\n", X0 );}
else{
if(delta >0){X1 = (-b -sqrt(delta))/(2*a); X2 = (-b -sqrt(delta))/(2*a);
printf(" l'equation admet 2 racines distints réels qui sont %lf et %lf \n", X1 , X2);}
else{
if( delta <0 ){ X1 = (-b -i*sqrt(-delta))/(2*a) ; X2 = (-b + i*sqrt(-delta))/(2*a);
printf("l'equation admet deux solutions complexes qui sont %lf et %lf", X1 , X2);}}
system("PAUSE");
return 0;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(){
float X1 , X2 , X0, a , b , c , delta, i;
printf("donner les coefients de l'equation \n");
scanf("%lf %lf %fl", &a, &b, &c);
if(a == 0 && b == 0 && c == 0 ){
printf("tous réels est solution \n");}
else {
if( a == 0){
X1 = -c/b;
printf("la solution est %lf , X1 \n");}
delta = (b*b) - (4*a*c);
if(delta == 0){ X0 == -b/(2*a) ;
printf(" On une racine double qui est %lf\n", X0 );}
else{
if(delta >0){X1 = (-b -sqrt(delta))/(2*a); X2 = (-b -sqrt(delta))/(2*a);
printf(" l'equation admet 2 racines distints réels qui sont %lf et %lf \n", X1 , X2);}
else{
if( delta <0 ){ X1 = (-b -i*sqrt(-delta))/(2*a) ; X2 = (-b + i*sqrt(-delta))/(2*a);
printf("l'equation admet deux solutions complexes qui sont %lf et %lf", X1 , X2);}}
system("PAUSE");
return 0;
}
}
A voir également:
- Aide sur mon code
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
2 réponses
BONJOUR
La politesse, on l'oublie trop souvent...
Tu as posté ton code, bonne idée! Mais utilise les balises < code> que le forum met à disposition la prochaine fois.
Après niveau calculs je sais pas, j'ai pas encore vu les complexes pour la résolution de polynômes, bien que je saisisse le principe.
from human import idiocy
del idiocy
La politesse, on l'oublie trop souvent...
Tu as posté ton code, bonne idée! Mais utilise les balises < code> que le forum met à disposition la prochaine fois.
- Tu n'as pas besoin de l'en-tête
errno.h
ici, tu peux l'enlever. - Il manque une accolade fermante à la fin de ton programme.
- Le
return 0;
n'est pas toujours exécuté, or il doit être à la toute fin de tonmain
, déplaces-le. Idem pour tonsystem("PAUSE");
, que je remplacerais volontiers par ungetchar();
. - Tu utilises
sqrt
mais n'as pas#include <math.h>
. -
%lf
c'est pour des typesdouble
et nonfloat
, change le type de tes variables; en plus tes calculs de nombres seront plus précis. - Tu as inversé le L et F au dernier paramètre de format de
scanf
! - Tu as oublié de faire un gros
else
pour tonif (a == 0)
, qui engloberait le reste des cas possibles. - Il manque un retour à la ligne dans ton dernier
printf
.
Après niveau calculs je sais pas, j'ai pas encore vu les complexes pour la résolution de polynômes, bien que je saisisse le principe.
from human import idiocy
del idiocy
Rah que ça énervant les double posts...
Je remets ici ce que j'avais mis dans l'autre post :
scanf("%lf %lf %fl", &a, &b, &c);
a, b et c sont des float. Pas des doubles.
if(a == 0 && b == 0 && c == 0 ){
La comparaison de flottants n'a pas de sens. Il vaut mieux vérifier que a, b et c sont suffisamment proches de 0.
X1 = -c/b;
Badaboum si b vaut 0...
delta = (b*b) - (4*a*c);
Vaut mieux mettre un else juste au dessus.
printf(" l'equation admet 2 racines distints réels qui sont %lf et %lf \n", X1 , X2);}
Jamais de %lf dans un printf().
X1 = (-b -i*sqrt(-delta))/(2*a) ;
Le compilateur risque de râler.
Note : la prochaine fois, merci d'utiliser la balise "code".
Exemple :
Cdlt,
Je remets ici ce que j'avais mis dans l'autre post :
scanf("%lf %lf %fl", &a, &b, &c);
a, b et c sont des float. Pas des doubles.
if(a == 0 && b == 0 && c == 0 ){
La comparaison de flottants n'a pas de sens. Il vaut mieux vérifier que a, b et c sont suffisamment proches de 0.
X1 = -c/b;
Badaboum si b vaut 0...
delta = (b*b) - (4*a*c);
Vaut mieux mettre un else juste au dessus.
printf(" l'equation admet 2 racines distints réels qui sont %lf et %lf \n", X1 , X2);}
Jamais de %lf dans un printf().
X1 = (-b -i*sqrt(-delta))/(2*a) ;
Le compilateur risque de râler.
Note : la prochaine fois, merci d'utiliser la balise "code".
Exemple :
ici tu mets ton code
Cdlt,
La comparaison de flottants n'a pas de sens. Il vaut mieux vérifier que a, b et c sont suffisamment proches de 0.Certes, mais dans ce cas précis,
a
bet
cne subissent pas de calculs, donc un 0 tapé par l'utilisateur sera un vrai 0 en
float.
Jamais de %lf dans un printf().Raaaah, si tout le monde compilait avec
-Wall -Werror -pedantic...
donc un 0 tapé par l'utilisateur sera un vrai 0 en float
Le C n'impose pas la représentation des flottants. Du coup, on peut avoir des surprises parfois.
Par exemple, si l'utilisateur rentre 0.1, tu ne pourras pas faire : if(a==0.1), ça risque de ne pas fonctionner. Pour le 0, ça marchera effectivement la plupart du temps des plateformes, mais rien ne te garantie que la portabilité du fonctionnement.
Le C n'impose pas la représentation des flottants. Du coup, on peut avoir des surprises parfois.
Par exemple, si l'utilisateur rentre 0.1, tu ne pourras pas faire : if(a==0.1), ça risque de ne pas fonctionner. Pour le 0, ça marchera effectivement la plupart du temps des plateformes, mais rien ne te garantie que la portabilité du fonctionnement.