Resoudre une equation du second degre c - C - Programmation
Marsh Posté le 13-02-2013 à 13:01:06
Farian a écrit : Et la question est ? |
Le programmeur C connaît-il le second degré ?
Marsh Posté le 22-02-2013 à 22:52:53
Bonjour ! C'est un programme pour apprendre en jouant, il y a des valeurs à initialiser, la question, peux-tu jouer à ça? Le cours sur les equations du premier et du second degre est disponible sur mon site.
Marsh Posté le 26-02-2013 à 13:56:45
venbio edit a écrit : Bonjour ! C'est un programme pour apprendre en jouant |
Bonjour
Pour apprendre quoi ? A résoudre une équation du second degré ? Je pense que ceux qui circulent ici connaissent déjà la méthode et les principes. Par ailleurs ceci est un forum dédié à aider ceux qui ont un souci d'écriture de code en langage C et non un forum dédié aux mathématiques de niveau collège.
venbio edit a écrit : Le cours sur les equations du premier et du second degre est disponible sur mon site. |
Qu'est-ce qu'on en a rien à cirer...
Marsh Posté le 13-02-2013 à 10:58:21
1er fichier :
#include <stdio.h>
int main(int argc, char **argv)
{
double a, b, c, r1, r2, q ;
q = 4 ;
printf ("Resoudre l'equation du second degre de type : ax aucarre + bx + c= 0\n" ) ;
printf ("Entrer a le coefficient: " ) ;
scanf ("%lf",&a) ;
printf ("Entrer b le coefficient: " ) ;
scanf ("%lf",&b) ;
printf ("Entrer c le coefficient: " ) ;
scanf ("%lf",&c) ;
printf ("Calcul du discriminant Delta : b aucarre - 4ac\n\n" ) ;
printf ("%lf * %lf = %lf\n\n", b,b, b*b) ;
printf ("%lf * %lf * %lf = %lf\n\n", a, c, q, a*c*q) ;
printf ("Entrer la valeur du premier terme : " ) ;
scanf (" %lf", &r1) ;
printf ("Entrer la valeur du second terme : " ) ;
scanf (" %lf", &r2) ;
printf ("Delta : %lf - %lf = %lf\n", r1,r2,r1-r2) ;
return 0;
}
2d fichier :
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv)
{
char reponse;
float coefb,i,coefa,nb,constc,q,delta,coefbform,aaform ;
delta = 464 ; // initialiser les valeurs, attention : pour obtenir la racine de Delta, dans la situation où Delta est négatif. Initialiser sa valeur à valeur absolue.
q = 4 ;
i=2;
nb = 2 ;
coefa = 5 ; // initialiser les valeurs
coefb = 22; // initialiser les valeurs
coefbform = -22 ; //b dans la formule aprés règle de priorité des signes.
constc = 1; // initialiser les valeurs
aaform = 10 ; // initialiser, c'est 2a.
printf ("si Delta < 0, alors l'equation n'a pas de solution reelle. Par contre, elle possede deux solutions complexes conjuguees.\nSi Delta = 0, alors l'equation a pour solution : -b / 2a\nSi Delta > 0, alors l'equation a deux solutions : -b -RacinedeDelta / 2a et moins b + RacineDelta/ 2a.\n" ) ;
printf ("Delta est il positif, nul ou negatif ? Taper + ou 0 ou - : \n" ) ;
scanf ("%c", &reponse) ;
if (reponse == '+' )
{
printf ("Le discriminant est positif : l'equation a deux solutions : -b moins RacinedeDelta / 2a et moins b + RacineDelta/2a\nPour trouver les solutions, j'utilise les formules : \n\n1) -b moins RacinedeDelta / 2a \n" ) ;
printf ("b = %f \n",coefb) ; //Attention aux règles de prorité des signes : si b est positif, ce sera -b dans la formule mais si b est negatif, ce sera +b dans la formule.
printf("Racine de Delta : %f => %fi\n",delta,sqrt(delta));
printf ("2a = %f * %f = %f\n",coefa, nb, coefa*nb) ;
printf ("ce qui donne la fraction suivante, au numerateur : %f - %f i sur\n",coefbform,sqrt(delta),coefbform-sqrt(delta)) ;
printf("au denominateur : 2a = %f * %f = %f\n",coefa, nb, coefa*nb) ;
printf ("Diviser chaque terme par le denominateur 2a : \nLe premier terme : -b = %f\n",coefbform) ;
printf ("par le diviseur 2a : %f * %f = %f\n",coefa, nb, coefa*nb) ;
printf ("Premier terme de la premiere solution : %f / %f = %f moins\n",coefbform,aaform,coefbform/aaform) ;
printf ("Second terme de la premiere solution : %f i/ %f = %f i\n\n", sqrt(delta),aaform,sqrt(delta)/aaform) ;
printf ("2) -b + i * Racinede |Delta| / 2a = + i, j'utilise la premiere solution et je remplace moins par plus : premier terme + second terme.\n" );
}
else if (reponse == '0')
{
printf ("Le discriminant est nul : l'equation a pour solution : - b /2a \nD'abord calcul de la valeur de b : moins%f\n",coefb);
printf ("Calcul de 2a %f * %f = %f\n",nb,coefa,nb * coefa) ;
}
else if (reponse == '-')
{
printf ("Le discriminant est negatif : donc l'equation proposee n'a pas de solution reelle. Par contre, elle possede deux solutions complexes conjuguees.\nPour trouver les solutions, j'utilise les formules : \n\n1) -b moins i * Racinede |Delta| / 2a\n" ) ;
printf ("b = %f \n",coefb) ; //Attention aux règles de prorité des signes : si b est positif, ce sera -b dans la formule mais si b est negatif, ce sera +b dans la formule.
printf("Racine de Delta : %f => %fi\n",delta,sqrt(delta));
printf ("2a = %f * %f = %f\n",coefa, nb, coefa*nb) ;
printf ("ce qui donne la fraction suivante, au numerateur : %f - %f i sur\n",coefbform,sqrt(delta),coefbform-sqrt(delta)) ;
printf("au denominateur : 2a = %f * %f = %f\n",coefa, nb, coefa*nb) ;
printf ("Diviser chaque terme par le denominateur 2a : \nLe premier terme : -b = %f\n",coefbform) ;
printf ("par le diviseur 2a : %f * %f = %f\n",coefa, nb, coefa*nb) ;
printf ("Premier terme de la premiere solution : %f / %f = %f moins\n",coefbform,aaform,coefbform/aaform) ;
printf ("Second terme de la premiere solution : %f i/ %f = %f i\n\n", sqrt(delta),aaform,sqrt(delta)/aaform) ;
printf ("2) -b + i * Racinede |Delta| / 2a = + i, j'utilise la premiere solution et je remplace moins par plus : premier terme + second terme.\n" );
}
return 0;
}
Message édité par venbio edit le 24-02-2013 à 22:46:19