Equation du 3éme degrée [Résolu]

Signaler
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010
-
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010
-
Slt,



je t'envoie le programme de maths, ms j'ai essayé de mettre un system(pause) ms cela me fou une erreur de compilation. Pourré-tu me dire ou je dois le mettre car quand je l'exécute, le résultat ne s'affiche pas.

merci bcp

Prgm

#include <stdio.h>
#include <math.h>


/* Variables. */


float a, b, c;
float x, x1, x2;
float z;


/* Fonctions. */


int calc_fonc(void);
int sup_zero(void);
int inf_zero(void);
int ega_zero(void);


/* programme. */


main()
{
   printf("\n[*****Programme made by Bob l'Eponge!!!!!*****]");
  
   printf("\n\nCe programme resoud une equation du troisieme degre");
  
   printf("\nDu type ax+bx+c=0");
  
   printf("\n\nEntrez la valeur de a: ", a);
      scanf("%f", &a);
  
   printf("\n\nEntrez la valeur de b: ", b);   
      scanf("%f", &b);
  
   printf("\n\nEntrez la valeur de c: ", c);
      scanf("%f", &c);
  
    calc_fonc();
   
   if ( z > 0 )
   {
     sup_zero();
   }
   else if ( z < 0 )
   {
     inf_zero();
   } 
   else
   {
     ega_zero();
   }   
}
int calc_fonc(void)
{
   z = ( b * b ) -( 4.0 * ( a * c ) );
   printf("\nLe resultat du calcul est %.2f", z);
}
int sup_zero(void)
{
   x1 = ( ( - b ) + ( sqrt ( z ) ) ) / ( 2 * a );
   x2 = ( ( - b ) - ( sqrt ( z ) ) ) / ( 2 * a );
   printf("\n\nLe resultat de l'operation est %.2f %.2f", x1, x2);
}
int inf_zero(void)
{
   printf("\n\nPas de solutions!");
  
   return 0;
}
int ega_zero(void)                           
{      
   x = ( -b ) / ( 2 * a );
   printf("\n\nLa seule solution est %.2f", x);
}   






J-Ph

20 réponses

Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010

J-Ph
Messages postés
48
Date d'inscription
vendredi 8 décembre 2000
Statut
Membre
Dernière intervention
2 juillet 2009

Ah exact, j'avais pas vu les messages du dessus...

Bon, en tout cas viens pas te plaindre JP parce que la, il t'en a mis un tout simple et qui marche très bien (et sans fonction qui, il est vrai ne servent pas à grand chose pour un si petit programme).

Je dis merci pour toi à Jean François parce que j'ai l'impression qu'on va pas en voir la couleur (de ton merci).

++ et bonne continuation à tous
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Si je comprend bien ton problème la fenêtre s'affiche et se ferme tout de suite?
Est-ce celà?

A+
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010

oui, c ça. J'ai voulu mettre systeme("pause") mais j'ai une erreur de compilation. Peux tu me dire ou je dois le mettre ( aprés le printf ?)


merci

J-Ph
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
C'est system("PAUSE") qu'il faut mettre.

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

Bonjour,

1) ax² + bx + c = 0
2) équation du second degré
3) une fonction int xxx() doit retourner un int
4) ça marche sous Visual C++ après les modif des int

Jean-François
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Le langage utilisé semble être du C, il faut donc utiliser getch(); (de mémoire) qui est déclaré dans:
conio.h
ou stdio.h
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010

J-Ph
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010

J-Ph
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010

systeme("pause"), je le mets ou ?
et getch() je le mets ou ?
pr infos c une b équation du 3émedegrée!!!!
J-Ph
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

1) Ce que l'on voit de marqué dans le fichier source : ax+bx+c=0 c'est à dire (a+b)x+c=0 c'est du premier degré !
2) La résolution qui est faite : déterminant² = b²-4ac et tout le toutim sur la ou les solutions c'est du second degré qui prouve qu'il manque bien l'exposant à ax² !

Jean-François
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
getch() ou system("PAUSE");
sont à mettre (l'un ou l'autre) avant la fin du main (avnat la dernière accolade).
A+
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Et il s'agit de la résolution d'équations de second degré car le polynome est de degré 2 et sont plus grand monome est au carré et non au cube. De plus, la méthode utilisée pour résoudre l'équation est celle pour les équations de second degré :
z = ( b * b ) -( 4.0 * ( a * c ) );
x1 = ( ( - b ) + ( sqrt ( z ) ) ) / ( 2 * a );
x2 = ( ( - b ) - ( sqrt ( z ) ) ) / ( 2 * a );

cf. http://fr.wikipedia.org/wiki/%C3%89quation_du_second_degr%C3%A9

A+
Messages postés
48
Date d'inscription
vendredi 8 décembre 2000
Statut
Membre
Dernière intervention
2 juillet 2009

Non, c'est une équation du 2ème degré.
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010

slt,



j'ai modifié le code, cela ne marche pas. Commenty dois je faire ?

merci
Jp

#include <stdio.h>
#include <math.h>


/* Variables. */


float a, b, c;
float x, x1, x2;
float z;


/* Fonctions. */


int calc_fonc(void);
int sup_zero(void);
int inf_zero(void);
int ega_zero(void);


/* programme. */


main()
{
   printf("\n[*****Programme made by Bob l'Eponge!!!!!*****]");
  
   printf("\n\nCe programme resoud une equation du troisieme degre");
  
   printf("\nDu type ax+bx+c=0");
  
   printf("\n\nEntrez la valeur de a: ", a);
      scanf("%f", &a);
  
   printf("\n\nEntrez la valeur de b: ", b);   
      scanf("%f", &b);
  
   printf("\n\nEntrez la valeur de c: ", c);
      scanf("%f", &c);
  
    calc_fonc();
   
   if ( z > 0 )
   {
     sup_zero();
   }
   else if ( z < 0 )
   {
     inf_zero();
   } 
   else
   {
     ega_zero();
   }   
}
int calc_fonc(void)
{
   z = ( b * b ) -( 4.0 * ( a * c ) );
   printf("\nLe resultat du calcul est %.2f", z);
}
int sup_zero(void)
{
   x1 = ( ( - b ) + ( sqrt ( z ) ) ) / ( 2 * a );
   x2 = ( ( - b ) - ( sqrt ( z ) ) ) / ( 2 * a );
   printf("\n\nLe resultat de l'operation est %.2f %.2f", x1, x2);
}
int inf_zero(void)
{
   printf("\n\nPas de solutions!");
  
   return 0;
}
int ega_zero(void)                           
{      
   x = ( -b ) / ( 2 * a );
   printf("\n\nLa seule solution est %.2f", x);
system("pause");
}   






J-Ph
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

Sans commentaire !

Jean-François
Messages postés
48
Date d'inscription
vendredi 8 décembre 2000
Statut
Membre
Dernière intervention
2 juillet 2009

Je me trompe peut-être mais il me semble que la fonction qui calcule ton determinant, celle que tu as appelé calc_fonc, doit recevoir en paramètres ce dont elle a besoin pour calculer ce determinant.

essaie, quand tu appelles ta fonction dans ton main après tout les printf, scanf de mettre calc_fonction(a, b, c); au lieu de calc_fonction();

Ah et aussi un autre problème, tu écris la valeur de z (ton déterminant) à l'intérieur de ta fonction, ce qui fait que le main n'a jamais accès à cette variable : met un return z; à la dernière ligne de ta fonction calc_fonc.

Voilà, y a peut être autre chose mais corrige dèjà ça.

Et si ça marche, dis-le, y a surement d'autres personnes qui auront le même problème un jour.

Voilà ++
Messages postés
48
Date d'inscription
vendredi 8 décembre 2000
Statut
Membre
Dernière intervention
2 juillet 2009

Pourquoi ce "sans commentaire" Jean-François?
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

Parce que c'est un "programme" délirant truffé d'erreurs déjà signalées et non corrigées : toutes les variables sont globales donc rien à passer, des fonctions qui sont sensées retournées un entier et qui ne le font pas, du troisième degré qui est du second degré, un déterminant qui n'en est pas un (c'est son carré), ...


La seule différence avec la première version est une pause ajoutée en cas de racine double !

Voilà un exemple amplement suffisant pour un si petit problème :

#include <stdio.h>
#include <math.h>
int main(void)
{
   float a,b,c,det2;



   printf("Resolution d'une equation du second degre\n");
   printf("Coefficient a : ");
   scanf("%f",&a);
   printf("Coefficient b : ");
   scanf("%f",&b);
   printf("Coefficient c : ");
   scanf("%f",&c);



   det2 = (b * b) - (4. * a * c);
   if (det2 < 0)
      printf("Pas de racines reelles\n");
   else if (det2 == 0)
      printf("Racine double : %.2f\n"
            ,(- b) / (2 * a));
   else
      printf("Racines : %.2f et %.2f\n"
            ,(- b - sqrt(det2)) / (2 * a)
            ,(- b + sqrt(det2)) / (2 * a));
   return 0;
}




Jean-François
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010

re,



merci pour votre passiance. Dsl, je suis le boulet!!!!!

J-Ph