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 !
A voir également:
- Programme qui ne s'exécute pas..
- Programme demarrage windows - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Programme word gratuit - Guide
- Message programmé iphone - Guide
7 réponses
dans tous tes if tu affectes des valeur aux variables au lieu de les comparer...
remplace les
remplace les
if ((a=0)&&(b=0))par
if ((a==0)&&(b==0))
Voici la correction :
Et on exécute :
Bonne chance
#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