Resolution de l'equation du second degrés

Fermé
sisimouhamed Messages postés 79 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 28 novembre 2011 - 5 sept. 2008 à 03:25
 Amet Sene - 13 nov. 2009 à 13:15
Bonjour,
je voudrais que vous me corrigez mon faute dans le programme suivant.ce programme est compilé mais il ne donne pas de bonnes solutions:#include<stdio.h>
#include<math.h>
main (){
float a,b,c,delta,x1,x2,x;
printf("entrer a\n:");
scanf("%f", &a);
printf("entrer b\n:");
scanf("%f", &b);
printf("entrer c\n:");
scanf("%f", &c);
delta==((b*b)-(4*a*c));
if(a!=0){
if (delta>0){
x1=((-b- sqrt(delta)))/(2*a);
x2=(-b+ sqrt(delta))/(2*a);
printf("les deux solution sont:%f et %f", x1, x2);
scanf("%f %f", &x1, &x2);
}

else if(delta==0){
x==(-b)/(2*a);
printf("le resultat est:%f\n", x);
scanf("%f", &x);
}
}
else
printf("pas de solution\n", x);



}
A voir également:

4 réponses

Utilisateur anonyme
10 avril 2009 à 01:28
#include <iostream>
#include <vector>

public class polynome{
//Membres de l'objet
double a,b,c;

//Constructeur
polynome(double a,double b,double c):a=0,b=0,c=0{}

//Destructeur
~polynome(){}

//Calcule delta
double delta(){return b*b-4*a*c;}

std::vector<double> racines(){
std::vector v;
double d=this.delta();
if (d<0){
std::cout<<"Pas de racines reelles !"<<std::endl;
return v;
}
else if (d==0){
std::cout<<"Une seule racine reelle"<<std::endl;
v.push_back(........); //formule pour une racine
return v;
}else{//d>0
std::cout<<"Deux racines reelles"<<std::endl;
v.push_back(........); //formule pour la première racine
v.push_back(........); //formule pour la deuxième racine
return v;
}
}
};

std::ostream & operator<< (std::ostream &os, polynome const &p){
std::ostream o;
o<<a<<"x²+"<<b<<"x+"<<c;
}

int main(){
polynome p(2,5,6);
std::cout<<p<<std::endl;
std::cout<<"delta="<<p.delta()<<std::endl;
std::vector v=p.racines();
std::cout<<"racines:"<<std::end;
for(unsigned int i=0;i<v.size();++i) std::cout<<v[i]<<std::endl;
return 0;
}
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
10 avril 2009 à 02:16
Salut,
Oui, mais ce n'est pas du C...
0
Il y a des années que je ne programme plus en C++. Je ne pourrais donc pas te corriger le programme dans les détails, mais je peux te donner quelques directives:

1) Essaye d'"aérer" les instructions de façon que l'on sache ou le bloc commence en ou il fini { }. Tel que le programme est écrit il est difficilement lisible. Par exemple: x1=((-b- sqrt(delta)))/(2*a); tu as une paire de parenhtèses en trop. Cela ne gêne pas la compilation, mais bien les yeux de celui qui lit.
2) Ne confond pas l'opérateur d'asignation = (opérateur arithmetique) avec l'opérateur logique == decomparaison. Il s'agît de deux opérations tout-à-fait differéntes. Par exemple delta==((b*b)-(4*a*c)); tu vex ici assigner a delta la valeur calcuée? dans ce ca tu devrais plutôt écrire delta=(b*b)-(4*a*c); et il y a encore quelques fautes de ce type.

Regarde cela en détail. Je crois que tu peux faire beaucoup miex. Lors que on commence à programmer, on est content quand ça marche!, mais ce n'est pas suffisant. Il faut que tu puisses lire le programme quelques années plus tard et tu le comprennes encore. Il faut apprendre dès le début à écrire en professionnel.
-1
c pas du c++ mais du c ;)

si tu vx pour t"aider voila ma solution mais je c pas si c correcte :)

void main (void)
{
int a,b,c;
float delta,x1,x2;

/* SAISIE */

printf("Veuillez entrer le coefficient de A S.V.P\n\t");
scanf ("%d",&a);
printf("\nVeuillez entrer le coefficient de B S.V.P\n\t");
scanf ("%d",&b);
printf("\nVeuillez entrer le coefficient de C S.V.P\n\t");
scanf ("%d",&c);

/* CALCULE DE DELTA */

delta=(float)(b*b)-(4*a*c);

/* TESTS CALCULE AFFICHAGE */

if(delta==0)
{
x1=(float)(-b+sqrt(delta))/(2*a);
printf("\n L'equation\n %d x%c + %d x + %d ",a,253,b,c);
printf("\n A UNE SEUL RACINE QUI EST %f",x1);
printf("\n ET UN DELTA QUI EST %f\n",delta);
}
else
{
if(delta<0)
{
printf("\n L'equation\n %d x%c + %d x + %d ",a,253,b,c);
printf("\n A PAS DE RACINE" );
printf("\n ET UN DELTA QUI EST %f\n",delta);
}

else
{
x1=(float)(-b+sqrt(delta))/(2*a);
x2=(float)(-b-sqrt(delta))/(2*a);
printf("\n L'equation\n %d x%c + %d x + %d ",a,253,b,c);
printf("\n A DEUX RACINES QUI SONT %f et %f",x1,x2);
printf("\n ET UN DELTA QUI EST %f\n",delta);
}
}
}





BIEN A TOI
-1
je me permet d'ajouter ma pierre ;)
Pour avoir le choix des solutions avec imaginaires
void main (void)
{
int a,b,c,imaginaire;
float delta,x1,x2,x1i,x2i;

/* SAISIE */

printf("Veuillez entrer le coefficient de A S.V.P\n\t");
scanf ("%d",&a);
printf("\nVeuillez entrer le coefficient de B S.V.P\n\t");
scanf ("%d",&b);
printf("\nVeuillez entrer le coefficient de C S.V.P\n\t");
scanf ("%d",&c);

/* CALCULE DE DELTA */

delta=(float)(b*b)-(4*a*c);

/* TESTS CALCULE AFFICHAGE */

if(delta==0)
{
x1=(float)(-b+sqrt(delta))/(2*a);
printf("\n L'equation\n %d x%c + %d x + %d ",a,253,b,c);
printf("\n A UNE SEUL RACINE QUI EST %f",x1);
printf("\n ET UN DELTA QUI EST %f\n",delta);
}
else
{
if(delta<0)
{ printf ("\nAcceptez vous les imaginaires ? oui=1 non=0 \n\t");
  scanf ("%d",&imaginaire);
    if(imaginaire>0)
    {
    x1=(float)(-b)/(2*a);
    x1i=(float) (-sqrt(-delta))/(2*a);
    x2=(float) (-b)/(2*a);
    x2i=(float) (sqrt(-delta))/(2*a);
    printf("\n L'equation\n %d x%c + %d x + %d ",a,253,b,c);
    printf("\n A DEUX RACINES QUI SONT %f + %f i ET %f + %f i",x1,x1i,x2,x2i );
    printf("\n ET UN DELTA QUI EST %f\n",delta);
    }
    else
    {
    printf("\n L'equation\n %d x%c + %d x + %d ",a,253,b,c);
    printf("\n A PAS DE RACINE" );
    printf("\n ET UN DELTA QUI EST %f\n",delta);
    }
}

else
{
x1=(float)(-b+sqrt(delta))/(2*a);
x2=(float)(-b-sqrt(delta))/(2*a);
printf("\n L'equation\n %d x%c + %d x + %d ",a,253,b,c);
printf("\n A DEUX RACINES QUI SONT %f et %f",x1,x2);
printf("\n ET UN DELTA QUI EST %f\n",delta);
}
}
}
0
Salut SisiMohamed ton code source est correcte il manque seulement des getchar (). faut mettre en bas deux ou trois getcher () et tu pourra exécuter le programme
-1