Partage
  • Partager sur Facebook
  • Partager sur Twitter

aire triangle

mach' pas non plus X'D

    17 octobre 2008 à 22:48:56

    Re salut!
    ^^
    pour mon énieme topic (désolé, mais je n'aime pas resté coincé... ^^ ) je vais traiter l'aire d'un triangle :
    J'ai désiré faire unn pitit programme qui calcule l'aire d'un triangle à partir de 3 cotés de ce triangle...

    ici pour la formule de Héron qui permet ce tour de magie...

    j'ai donc codé comme ceci :

    double ctri1 = sc.nextInt();
    			double ctri2 = sc.nextInt();
    			double ctri3 = sc.nextInt();
    			double s = (1/2)*(ctri1+ctri2+ctri3);
    			double a = Math.sqrt(s*(s-ctri1)*(s-ctri2)*(s-ctri3));
    			System.out.println("Le perimetre de ce triangle est " +(ctri1+ctri2+ctri3));
    			System.out.println("l'aire est de "+a);
    


    et lors du test, Ô grande deception...

    Inscrivez la longueur des 3 cotes d'un triangle en apuyant sur entree entre chaque longueur :
    45
    62
    35
    Le perimetre de ce triangle est 142.0
    l'aire est de -0.0


    snif... :euh: quelqu'un as t'il une expliquation??
    ;) j'en suis sur, tout as une réponse sur ce forum ^^
    merci d'avance en tout cas
    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2008 à 23:23:30

      Salut,

      Déjà pour les 3 premières lignes, tes variables sont de type double, donc tu doit mettre

      sc.nextDouble();
      


      au lieu de:

      sc.nextInt();
      


      Le deuxième problème viens de la ligne:

      double s = (1/2)*(ctri1+ctri2+ctri3);
      


      Mais la je vois pas trop pourquoi ça ne marche pas, en fait dans le programme, 1/2=0 o_O

      Si tu remplaces cette ligne par:

      double s = (ctri1+ctri2+ctri3)/2;
      


      Ou:

      double s = 0.5*(ctri1+ctri2+ctri3);
      


      Tout marche sans problème :)

      Mais c'est quand même bizarre, si on fait un
      System.out.println(1/2);
      

      Pourquoi obtient-on 0 ? La faudrait que quelqu'un qui s'y connais vraiment bien en Java vienne expliquer ça parce que je vois pas o_O

      A+
      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2008 à 0:28:41

        Le resultat de la division entière de 1 par 2 est 0...

        1/2 != 1.0/2.0
        • Partager sur Facebook
        • Partager sur Twitter
          18 octobre 2008 à 1:17:44

          1/2 est une division entière par défaut => 0

          mais pour régler ça il faut faire un ....
          double z=((double)1/2)*(k+l+m);
          

          bonne suite !
          • Partager sur Facebook
          • Partager sur Twitter
            18 octobre 2008 à 1:42:30

            Citation : SeifJava2

            1/2 est une division entière par défaut => 0

            mais pour régler ça il faut faire un ....

            double z=((double)1/2)*(k+l+m);
            


            bonne suite !


            Ou faire 1.0 / 2.0
            • Partager sur Facebook
            • Partager sur Twitter
              18 octobre 2008 à 2:06:22

              Mais c'est un débutant ;)
              Donc s'il veule des floats tu l'oblige aussi d'écrire
              1.0f/2.0f
              







              • Partager sur Facebook
              • Partager sur Twitter
                20 octobre 2008 à 1:47:28

                Citation : SeifJava2

                Mais c'est un débutant ;)


                Je trouve ça un peu excessif de lui montrer à employer des casts pour régler de genre de problème. Il risque de croire que c'est la seule façon de procéder, et ensuite abuser des casts.

                Or, un cast est le genre de chose que l'on n'emploie pas n'importe où...
                • Partager sur Facebook
                • Partager sur Twitter
                  22 octobre 2008 à 23:55:50

                  heu
                  vais mettre 0.5*(...)^^
                  merci!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 octobre 2008 à 14:22:35

                    J'ai encore moins long !

                    1./2

                    :p
                    • Partager sur Facebook
                    • Partager sur Twitter

                    aire triangle

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown