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
Bonjour,
J'ai écrit 2 programmes en C , l'un calculant les racines d'un polynome du 2ème degré et l'autre comparant
2 entiers naturels mais les 2 ne marchent pas , corrigez moi les . Merci
voila le programme pour le polynome:
#include<stdio.h>
void 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=-1*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
if (delta<0)
printf(" le polynome n'admet pas de racines");
system("pause");
}


Pour celui qui compare:
#include<stdio.h>

main () {
int a;
int b;
int max;
float 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");
}

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.
0
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
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
0
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 !
0
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
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");
}
0