Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 491 fois - Téléchargée 20 fois
1. #include <stdio.h> 2. #include <stdlib.h> 3. #include <math.h> 4. 5. long signeDelta (long a, long b, long c) { 6. return ((b*b) - (4*a*c)); 7. } 8. 9. int main(int argc, char **argv) { 10. long resultat1,denominateur,a,b,c; 11. double resultatNul,numerateur1,numerateur2,resultatPositif1,resultatPositif2,racine; 12. unsigned long signeDeltaArange; 13. 14. if ( argc == 4 ) { 15. sscanf(argv[1], "%ld", &a); 16. sscanf(argv[2], "%ld", &b); 17. sscanf(argv[3], "%ld", &c); 18. } else { 19. printf ("Entrez dans l'odre a, b et c:\n"); 20. printf ("Example:\n"); 21. printf ("\ta b c : 3 5 21\n\n"); 22. 23. printf("a b c : "); 24. scanf ("%ld %ld %ld", &a, &b, &c); 25. } /* Les coefficient sont scannés chacun leur tour sauf si l'utilisateur se trompe et les rentre en meme temps, dans ce cas ils seront scannés ensemble mais quand même placés dans la bonne variable */ 26. 27. resultat1 = signeDelta(a,b,c); 28. printf ("Le Delta vaut %ld\n", resultat1); 29. 30. if (resultat1 == 0) { 31. resultatNul = -(b) / (2*a); 32. printf("La seule solution est %lf\n", resultatNul); 33. } else if ( resultat1 > 0) { 34. denominateur = 2*a ; 35. racine = sqrt(resultat1); 36. numerateur1 = ((-b) - racine); 37. resultatPositif1 = numerateur1/denominateur; 38. numerateur2 = (-b) + racine; 39. resultatPositif2 = numerateur2/denominateur; 40. 41. printf ("Le premier resultat est %lf\n", resultatPositif1); 42. printf ("Le deuxieme resultat est %lf\n", resultatPositif2); 43. } else { 44. printf ("Le Delta est negatif donc le trinome ne s'annule jamais\n"); 45. } 46. 47. return 0; 48. }
18 août 2009 à 10:32
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define carre(x) x * x//Macro pour le Carré de X.
#define racine(x) sqrt(x)//Macro pour la racine-carré , c'est plus beau.
int main()
{
double a,x,b,c,delta = 0 ;
double *PointeursurA = &a;
double *PointeursurB = &b;
double *PointeursurC = &c;
printf ("Recsolution d'ecquation du type ax%c + bx + c par lemuria.\n",0xFD);
printf ("Une equation du second degre est de la forme ax%c + bx + c = 0 \n Veuillez indiquer A \a : ",0xFD);//On indique A
scanf("%lf", &a);
printf("L'adresse de la variable A est : %d \n", &PointeursurA);
printf("Valeur de A (pointeur) : %.2lf \n", *PointeursurA);
printf (" Veuillez indiquer B \a: ");
scanf("%lf", &b);
printf("L'adresse de la variable age est : %d \n", &b);
printf("Valeur de B (pointeur) : %.2lf \n", *PointeursurB);
printf (" Veuillez indiquer C \a : ");//On Indique C
scanf("%lf", &c);
printf("Valeur de C (pointeur) : %.2lf \n", *PointeursurC);
printf("L'adresse de la variable age est \a : %d \n", &c);
printf("\n \a\a\a\a Resume\n A = %.2lf , B = %.2lf et C = %.2lf \n \n",a,b,c);// On resume la situation ^^
delta = carre(b);
printf ("B %c = %.2lf \n \n", 0xFD,delta );
delta = delta - (4 * ((a) * (c)));
printf (" B%c-4ac = %.2lf \n \n", 0xFD, delta );
if ( delta < 0)
{
printf ("L'equation n'admet aucune solution.\n");
system("PAUSE");
}
else if ( delta == 0)
{
printf ("L'equation admet une solution. ",b,a );
x = ( (- (b)) / (2 * a)) ;
printf("X= %.2lf \n",x);
system("PAUSE");
}
else if ( delta > 0)
{
printf ("L'equation admet 2 solution.\n Premiere solution \n",b,delta );
x = ( -(b) + (racine(delta))) / (2*a );
printf("X= %.2lf \n",x);#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define carre(x) x * x//Macro pour le Carré de X.
#define racine(x) sqrt(x)//Macro pour la racine-carré , c'est plus beau.
int main()
{
double a,x,b,c,delta = 0 ;
double *PointeursurA = &a;
double *PointeursurB = &b;
double *PointeursurC = &c;
printf ("Recsolution d'ecquation du type ax%c + bx + c par lemuria.\n",0xFD);
printf ("Une equation du second degre est de la forme ax%c + bx + c = 0 \n Veuillez indiquer A \a : ",0xFD);//On indique A
scanf("%lf", &a);
printf("L'adresse de la variable A est : %d \n", &PointeursurA);
printf("Valeur de A (pointeur) : %.2lf \n", *PointeursurA);
printf (" Veuillez indiquer B \a: ");
scanf("%lf", &b);
printf("L'adresse de la variable age est : %d \n", &b);
printf("Valeur de B (pointeur) : %.2lf \n", *PointeursurB);
printf (" Veuillez indiquer C \a : ");//On Indique C
scanf("%lf", &c);
printf("Valeur de C (pointeur) : %.2lf \n", *PointeursurC);
printf("L'adresse de la variable age est \a : %d \n", &c);
printf("\n \a\a\a\a Resume\n A = %.2lf , B = %.2lf et C = %.2lf \n \n",a,b,c);// On resume la situation ^^
delta = carre(b);
printf ("B %c = %.2lf \n \n", 0xFD,delta );
delta = delta - (4 * ((a) * (c)));
printf (" B%c-4ac = %.2lf \n \n", 0xFD, delta );
if ( delta < 0)
{
printf ("L'equation n'admet aucune solution.\n");
system("PAUSE");
}
else if ( delta == 0)
{
printf ("L'equation admet une solution. ",b,a );
x = ( (- (b)) / (2 * a)) ;
printf("X= %.2lf \n",x);
system("PAUSE");
}
else if ( delta > 0)
{
printf ("L'equation admet 2 solution.\n Premiere solution \n",b,delta );
x = ( -(b) + (racine(delta))) / (2*a );
printf("X= %.2lf \n",x);
printf ("Deuxieme solution \n");
x = ( -(b) - (sqrt(delta) )) / (2*a );
printf("X= %.2lf \n",x);
system("PAUSE");
}
return 0 ;
}
2 août 2009 à 10:52
30 juil. 2009 à 02:22
Merci encore pour ces idées d'améliorations
29 juil. 2009 à 20:15
Fonction polynome du second degre : f(x) = ax^2 + bx + c, f(x) : R->R.
(a,b,c) appartient a R donc a,b,c doit-etre de type float ou double (pour la precision).
Ensuite il faut construire un bon algorithme de resolution et cela passe par la decomposition des actions complexes.
algorithme :
fonction discriminant(entree Reel a, entree Reel b, entree Reel c) retourne Reel
debut
retourner ( b * b - 4 * a * c );
fin
// Solve ax^2 + bx + c = 0
// x0 : premiere racine
// x1 : deuxieme racine
// renvoie vrai si des solutions existe dans R
// renvoie faux s'il n'existe pas de solutions dans R
fonction resoudre(entree Reel a, entree Reel b, entree Reel c, sortie Reel x0, sortie Reel x1) retourne Booleen
debut
b := faux;
si a = 0 alors
lever_exception();
fin si;
delta := discriminant(a, b , c);
si delta >= 0 alors
b := vrai;
x0 = (-b - sqrt(delta)) / (2*a);
x1 = (-b + sqrt(delta)) / (2*a);
sinon
b := faux;
fin si;
retourner ( b );
fin
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.