Encore un probleme avec le c

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");
}
Configuration: Windows Vista / Internet Explorer 7.0

4 réponses

  1. 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
    1. 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
      1. 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
        1. 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