Programme qui ne s'exécute pas..
Résolu
Bonjour,
J'ai créé un petit programme calculant les racines du discriminant et sa valeur... Seulement, il s'arrête automatiquement après avoir entré a, b et c...
Voici le code :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float a = 0, b = 0, c = 0, racinedouble = 0, delta = 0, racinedouble2 = 0, rac1 = 0, rac2 = 0;
printf(" CALCUL DU DISCRIMINANT ET SES RACINES.\n\n");
printf("\nRentrez a :\n\n");
scanf("%d",&a);
printf("\nRentrez b :\n\n");
scanf("%d",&b);
printf("\nRentrez c :\n\n");
scanf("%d",&c);
delta = (b*b)-(4*(a*c));
if ((a=0)&&(b=0))
{
printf("\n Equation degeneree : 0 ou solutions infinies.\n\n\n");
}
else if ((a=0)&&(b!=0))
{
racinedouble = (b/c);
printf("\n Il y a une racine : %d\n\n\n", racinedouble);
}
else if ((a!=0)&&(b!=0))
{
if (delta < 0)
{
printf("\n Il n'y a pas de racine reelle.\n\n");
}
else if (delta = 0)
{
racinedouble2 = (-b)/(2*a);
printf("\n Il y a une racine double : %d.\n\n", racinedouble2);
}
else if (delta > 0)
{
rac1 = (((-b)-(delta/delta))/(2*a));
rac2 = (((-b)+(delta/delta))/(2*a));
printf("\n Il y a deux solutions : %d et %d\n\n", rac1, rac2);
}
}
system("PAUSE");
}
Merci d'avance !
J'ai créé un petit programme calculant les racines du discriminant et sa valeur... Seulement, il s'arrête automatiquement après avoir entré a, b et c...
Voici le code :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float a = 0, b = 0, c = 0, racinedouble = 0, delta = 0, racinedouble2 = 0, rac1 = 0, rac2 = 0;
printf(" CALCUL DU DISCRIMINANT ET SES RACINES.\n\n");
printf("\nRentrez a :\n\n");
scanf("%d",&a);
printf("\nRentrez b :\n\n");
scanf("%d",&b);
printf("\nRentrez c :\n\n");
scanf("%d",&c);
delta = (b*b)-(4*(a*c));
if ((a=0)&&(b=0))
{
printf("\n Equation degeneree : 0 ou solutions infinies.\n\n\n");
}
else if ((a=0)&&(b!=0))
{
racinedouble = (b/c);
printf("\n Il y a une racine : %d\n\n\n", racinedouble);
}
else if ((a!=0)&&(b!=0))
{
if (delta < 0)
{
printf("\n Il n'y a pas de racine reelle.\n\n");
}
else if (delta = 0)
{
racinedouble2 = (-b)/(2*a);
printf("\n Il y a une racine double : %d.\n\n", racinedouble2);
}
else if (delta > 0)
{
rac1 = (((-b)-(delta/delta))/(2*a));
rac2 = (((-b)+(delta/delta))/(2*a));
printf("\n Il y a deux solutions : %d et %d\n\n", rac1, rac2);
}
}
system("PAUSE");
}
Merci d'avance !
Configuration: Windows Vista Firefox 3.0.1
7 réponses
-
dans tous tes if tu affectes des valeur aux variables au lieu de les comparer...
remplace lesif ((a=0)&&(b=0))
parif ((a==0)&&(b==0))
-
tu es sur d'avoir tout remplacer... meme le
else if (delta = 0)
? -
Voici la correction :
#include <stdio.h> #include <stdlib.h> #include <math.h> // compilation gcc -W -Wall -o plop.exe plop.c -lm int main(){ // un double est plus précis qu'un float double a = 0, b = 0, c = 0, delta = 0, racinedouble2 = 0, rac1 = 0, rac2 = 0; printf(" CALCUL DU DISCRIMINANT ET SES RACINES.\n"); printf("Rentrez a :\n"); scanf("%lf",&a); // a,b,c sont des double donc il faut lire un double (%lf) printf("Rentrez b :\n"); scanf("%lf",&b); printf("Rentrez c :\n"); scanf("%lf",&c); delta = (b*b)-(4*(a*c)); // Attention il faut utiliser == !!! // Sinon tu fais une affectation et tu testes si la valeur affectée est // différente de 0 ou de NULL // Si tu compiles avec les warnings (options -W -Wall) il te prévient ! if(a == 0){ if(b == 0){ printf("Fonction constante :\n"); if(c==0) printf("infinité de raçines\n"); else printf("0 racine\n"); }else{ printf("Polynôme du premier degré\n"); // la racine peut être un réel ! %d ne permet que d'écrire un entier ! // bx + c == 0 <=> x = -c/b, b != 0 printf("Il y a une racine : %lf\n",c ? -c/b : 0); } }else{ if (delta < 0){ printf("Il n'y a pas de racine reelle.\n"); }else if (delta == 0){ racinedouble2 = (-b)/(2*a); printf("Il y a une racine double : %lf.\n", racinedouble2); }else{ rac1 = (-b-sqrt(delta))/(2*a); rac2 = (-b+sqrt(delta))/(2*a); printf("Il y a deux solutions : %lf et %lf\n", rac1, rac2); } } // system("PAUSE"); // pas standard, utilise getchar getchar(); return 0; }On compile (par exemple sous linux ça donne ça) :gcc -W -Wall -o plop.exe pouet.c -lm
Et on exécute :(mando@aldur) (~) $ ./plop.exe CALCUL DU DISCRIMINANT ET SES RACINES. Rentrez a : 1 Rentrez b : 1 Rentrez c : -2 Il y a deux solutions : -2.000000 et 1.000000
Bonne chance -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
-
De rien et bonne continuation ! N'oublie pas de compiler avec les options de warning par la suite !