Rechercher : dans
Par :

Resolution de l'equation du second degrés

Dernière réponse le 13 nov 2009 à 13:15:51 sisimouhamed, le 5 sep 2008 à 03:25:48 
 Signaler ce message aux modérateurs

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);



}

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « resolution de l'equation du second degrés » dans :
CCM et les bourses d'études VoirBourses d'études Beaucoup demandent des bourses d'études via ce site (CCM). Cet article a été créé pour leur répondre. CCM et les bourses d'études Bourses d'études en France Considérations générales Bourses du second degré et des premier...

1

matrix, le 5 sep 2008 à 04:43:05

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.

Répondre à matrix

2

zuidra, le 7 oct 2008 à 18:30:19

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

Répondre à zuidra

3

Joe, le 10 avr 2009 à 01:24:37

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);
}
}
}

Répondre à Joe

4

usbrapide, le 10 avr 2009 à 01:28:19
  • +1

#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;
}

Répondre à usbrapide

5

fiddy, le 10 avr 2009 à 02:16:21

Salut,
Oui, mais ce n'est pas du C...
Google is your friend

Répondre à fiddy

6

 Amet Sene, le 13 nov 2009 à 13:15:51

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

Répondre à Amet Sene