Encore un probleme avec le c
Fermé
xkaiser88
Messages postés
10
Date d'inscription
dimanche 21 février 2010
Statut
Membre
Dernière intervention
11 mars 2010
-
8 mars 2010 à 15:26
xkaiser88 Messages postés 10 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 mars 2010 - 9 mars 2010 à 16:36
xkaiser88 Messages postés 10 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 mars 2010 - 9 mars 2010 à 16:36
4 réponses
Bonjour
En première lecture, deux erreurs :
1 - les instructions soumises à un if ou au else correspondant doivent être regroupées par des accolades { }
2 - quand on fait un calcul avec des entiers, on a un résultat entier. Si on le traduit en flottant après, on ne retrouve pas les décimales qui avaient été perdues lors du calcul.
En première lecture, deux erreurs :
1 - les instructions soumises à un if ou au else correspondant doivent être regroupées par des accolades { }
2 - quand on fait un calcul avec des entiers, on a un résultat entier. Si on le traduit en flottant après, on ne retrouve pas les décimales qui avaient été perdues lors du calcul.
xkaiser88
Messages postés
10
Date d'inscription
dimanche 21 février 2010
Statut
Membre
Dernière intervention
11 mars 2010
8 mars 2010 à 17:09
8 mars 2010 à 17:09
Pour le premier j'ai mis les accolades dans les 2 programmes et la compilation detecte une erreur dans le else dans les deux programmes , pourquoi ?
Voici les 2 programmes après rectification:
Polynome :
#include<stdio.h>
main (){
int a;
int b;
int c;
float x1;
float x2;
float x;
float delta;
printf("saisir les coefficients du polynome");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
delta= b*b - 4*a*c;
printf("delta est:");
printf("%f", delta) ;
if(delta=0){
x=-b/2*a;
printf("la solution est egale");
printf("%f",x);
}
if ( delta>0){
x1=(-1*b+sqrt(2))/2*a;
x2=(-1*b-sqrt(2))/2*a;
}
printf("la solution est égale\n");
printf("%f",x1,x2);
else
printf(" le polynome n'admet pas de racines");
system("pause");
}
Comparaison :
#include<stdio.h>
main () {
int a;
int b;
int max;
int c;
scanf("%d",&a);
scanf("%d",&b);
c=a-b;
if(c<0){
max=b;
printf("le max est:\n");
}
printf("%d",max);
else {
max=a;
}
printf("%d",max);
system("pause");
}
Ne soyez pas trop rapide , je suis débutant dans le C
Voici les 2 programmes après rectification:
Polynome :
#include<stdio.h>
main (){
int a;
int b;
int c;
float x1;
float x2;
float x;
float delta;
printf("saisir les coefficients du polynome");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
delta= b*b - 4*a*c;
printf("delta est:");
printf("%f", delta) ;
if(delta=0){
x=-b/2*a;
printf("la solution est egale");
printf("%f",x);
}
if ( delta>0){
x1=(-1*b+sqrt(2))/2*a;
x2=(-1*b-sqrt(2))/2*a;
}
printf("la solution est égale\n");
printf("%f",x1,x2);
else
printf(" le polynome n'admet pas de racines");
system("pause");
}
Comparaison :
#include<stdio.h>
main () {
int a;
int b;
int max;
int c;
scanf("%d",&a);
scanf("%d",&b);
c=a-b;
if(c<0){
max=b;
printf("le max est:\n");
}
printf("%d",max);
else {
max=a;
}
printf("%d",max);
system("pause");
}
Ne soyez pas trop rapide , je suis débutant dans le C
Dans les deux programmes, tu ne respectes pas la structure du if - else : après le if, tu as un bloc d'instructions entouré de { }, ce qui est très bien, mais le else, s'il y en a un, doit venir aussitôt après. Si tu mets des instruction en dehors du bloc après l'accolade } qui suit le if, le if est complètement terminé et ne peut pas avoir de else.
Je pense que tu as simplement mis l'accolade } trop tôt
Ne soyez pas trop rapide , je suis débutant dans le C
Si je voulais être rapide, je donnerais la correction et on n'en parlerait plus !
Je pense que tu as simplement mis l'accolade } trop tôt
Ne soyez pas trop rapide , je suis débutant dans le C
Si je voulais être rapide, je donnerais la correction et on n'en parlerait plus !
xkaiser88
Messages postés
10
Date d'inscription
dimanche 21 février 2010
Statut
Membre
Dernière intervention
11 mars 2010
9 mars 2010 à 16:36
9 mars 2010 à 16:36
Bonsoir , j'ai corrigé le 2ème programme et il fonctionne , pour le 1er le programme, il ne donne pas les racines du polynome pourtant j'ai corrigé la structure du if , j'ai meme supprimé le else et je l'ai remplacé par un if : voila le nouveau programme :
#include<stdio.h>
main (){
int a;
int b;
int c;
float x1;
float x2;
float x;
float delta;
printf("saisir les coefficients du polynome");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
delta= b*b - 4*a*c;
printf("delta est:");
printf("%f", delta) ;
if(delta=0){
x=-b/2*a;
printf("la solution est egale");
printf("%f",x);
}
if ( delta>0){
x1=(-1*b+sqrt(2))/2*a;
x2=(-1*b-sqrt(2))/2*a;
}
printf("la solution est égale\n");
printf("%f",x1,x2);
if (delta <0) {
printf(" le polynome n'admet pas de racines");}
system("pause");
}
#include<stdio.h>
main (){
int a;
int b;
int c;
float x1;
float x2;
float x;
float delta;
printf("saisir les coefficients du polynome");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
delta= b*b - 4*a*c;
printf("delta est:");
printf("%f", delta) ;
if(delta=0){
x=-b/2*a;
printf("la solution est egale");
printf("%f",x);
}
if ( delta>0){
x1=(-1*b+sqrt(2))/2*a;
x2=(-1*b-sqrt(2))/2*a;
}
printf("la solution est égale\n");
printf("%f",x1,x2);
if (delta <0) {
printf(" le polynome n'admet pas de racines");}
system("pause");
}