Resolution de l'equation du second degrés

sisimouhamed Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -  
 Amet Sene -
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
 
#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   Statut Contributeur Dernière intervention   1 846
 
Salut,
Oui, mais ce n'est pas du C...
0
matrix
 
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
zuidra
 
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
Joe
 
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
Amet Sene
 
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