Partage
  • Partager sur Facebook
  • Partager sur Twitter

nature d'un triangle

mon code n'affiche que triangle equilatéral

    18 avril 2019 à 19:41:50

    #include<stdio.h>
    int main()
    {
    float a,b,c;
    printf("\nsaisir les dimensions du triangle\n");
    scanf("%f%f%f",&a,&b,&c);
    if((a=b) && (b=c))
    {printf("\ntriangle equilateral\n");
     }
     else
      if((a*a==(b*b)+(c*c)) || (b*b==(a*a)+(c*c))|| (c*c==(a*a)+(b*b)))
         { 
          if( a==b || a==c || b==c ) 
            {printf("\ntriangle rectangle isocéle\n");
          }
       else
       { printf("\n rectangle \n");
       }
    }
    else
     if ( (a==b) || (a==c) || (b==c) )
      {printf ("\ntriangle isocéle\n");
      }
    else 
     printf("\ntriangle isocéle\n");
    }  
    • Partager sur Facebook
    • Partager sur Twitter
      18 avril 2019 à 23:34:12

      1) Bonjour Merci c'est la moindre des choses à indiquer dans un post

      2) Indente ton code correctement, tu y verras plus clair. En particulier, évite de mettre else et if sur deux lignes différentes - écris "else if" d'une seule traite

      3) Bienvenue dans le fabuleux monde du débogage, ou tu dois trouver le bug par toi même :) Un programmeur passe plus de la moitié de son temps à déboguer, il est donc important que tu t'y habitues dès maintenant. Une façon de faire peut être d'afficher le contenu de tes variables à divers endroits du programme afin de comprendre ce qu'il se passe.

      4) En fait, si tu relis attentivement ton code tu devrais trouver l'erreur par toi même. Mais printer les variables a, b et c à divers endroits dans le code devrait t'aider à trouver d'où vient l'erreur.

      Bon courage

      • Partager sur Facebook
      • Partager sur Twitter
        18 avril 2019 à 23:40:34

        Si tu entres 0 pour b ou c, ça ne devrait plus afficher la même chose.

        C'est vrai qu'un debugger permet de localiser le problème en quelques secondes.

        -
        Edité par zoup 18 avril 2019 à 23:40:45

        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2019 à 10:32:51

          J'imagine que vous parlez de l'erreur évidente de la ligne 7. Mais il y a une autre erreur plus subtile : quand on compare deux nombres de type 'float' ou 'double' qui sont sensés être égaux, ils ne le sont pas toujours à cause d'erreurs d'arrondis. Par exemple si x = 4 et y = 2, il est possible que x + y fasse 6.0000000001 et non 6 tout court, et ce sont deux valeurs différentes. Normalement, il ne faut pas comparer des nombres 'float' ou 'double', ou alors gérer les erreurs d'arrondis en remplaçant le == par une fonction qui compare l'écart en valeur absolue par rapport à une précision donnée à l'avance.

          -
          Edité par robun 19 avril 2019 à 10:33:59

          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2019 à 12:27:50

            En effet, je n'étais pas allé au delà de la ligne 7.

            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2019 à 14:14:14

              merci beaucoup a tous probléme résolu:D
              • Partager sur Facebook
              • Partager sur Twitter

              nature d'un triangle

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown