Section courante

A propos

Section administrative du site

Un des problèmes les plus classiques de la géométrie moderne est le calcul de l'air d'un triangle. Il est fort simple de trouver la réponse : il faut simplement multiplier la largeur fois la hauteur et diviser par deux le résultat. Fort simple sans doute, mais peut expliquer sur le Net hélas... Vous trouverez la réponse que vous souhaitez, à l'aide du code source Ada suivant :

  1. WITH TEXT_IO;
  2.  
  3. PROCEDURE TriangleAreaExample IS 
  4.    
  5.    USE TEXT_IO; 
  6.    
  7.    FUNCTION TriangleArea(B,H:IN Float) RETURN Float IS BEGIN
  8.       RETURN 0.5*B*H;       
  9.    END TriangleArea; 
  10.    
  11. BEGIN 
  12.    PUT_LINE("Triangle de hauteur de 10 cm par 10 cm de largeur contient un air de "
  13.       & FLOAT'IMAGE(TriangleArea(10.0,10.0)) & " cm2"); 
  14.    PUT_LINE("Triangle de hauteur de 5 cm par 10 cm de largeur contient un air de "&       
  15.       FLOAT'IMAGE(TriangleArea(5.0,10.0)) & " cm2");
  16.    PUT_LINE("Triangle de hauteur de 3 cm par 2 cm de largeur contient un air de "&       
  17.       FLOAT'IMAGE(TriangleArea(3.0,2.0)) & " cm2");  
  18. END TriangleAreaExample;

on obtiendra le résultat suivant :

Triangle de hauteur de 10 cm par 10 cm de largeur contient un air de 50.0 cm2
Triangle de hauteur de 5 cm par 10 cm de largeur contient un air de 25.0 cm2
Triangle de hauteur de 3 cm par 2 cm de largeur contient un air de 3.0 cm2

Dans le même ordre d'idée, on peut facilement trouver la réponse pour un triangle équilatéral (triangle avec 3 côtés de même longueur). Vous trouverez la réponse que vous souhaitez, à l'aide du code source Ada suivant :

  1. WITH TEXT_IO;
  2.  
  3. PROCEDURE EquilateralTriangleAreaExample IS
  4.  
  5.    USE TEXT_IO;
  6.  
  7.    FUNCTION Sqrt(X:IN Float) RETURN Float 
  8.          IS A,B,M,XN:FLOAT; 
  9.    BEGIN 
  10.       IF X=0.0 THEN 
  11.          RETURN 0.0; 
  12.       ELSE 
  13.          M:=1.0; 
  14.          XN:=X; 
  15.          WHILE XN>=2.0 LOOP 
  16.             XN:=0.25*XN; 
  17.             M:=2.0*M; 
  18.          END LOOP; 
  19.          WHILE XN<0.5 LOOP 
  20.             XN:=4.0*XN; 
  21.             M:=0.5*M; 
  22.          END LOOP; 
  23.          A:=XN; 
  24.          B:=1.0-XN; 
  25.          LOOP 
  26.             A:=A*(1.0+0.5*B); 
  27.             B:=0.25*(3.0+B)*B*B; 
  28.             EXIT WHEN B<1.0E-15; 
  29.          END LOOP; 
  30.          RETURN A*M; 
  31.       END IF; 
  32.    END;
  33.  
  34.    FUNCTION EquilateralTriangleArea(S:IN Float) RETURN Float IS BEGIN
  35.       RETURN ((Sqrt(3.0))*(S*S))/4.0;
  36.    END EquilateralTriangleArea;
  37.  
  38. BEGIN
  39.    PUT_LINE("Triangle équilatéral de 10 cm contient un air de " &
  40.          FLOAT'IMAGE(EquilateralTriangleArea(10.0)) & " cm2");
  41.    PUT_LINE("Triangle équilatéral de 5 cm contient un air de "&
  42.       FLOAT'IMAGE(EquilateralTriangleArea(5.0)) & " cm2");
  43.    PUT_LINE("Triangle équilatéral de 3 cm contient un air de "&
  44.       FLOAT'IMAGE(EquilateralTriangleArea(3.0)) & " cm2");
  45. END EquilateralTriangleAreaExample;

on obtiendra le résultat suivant :

Triangle équilatéral de 10 cm contient un air de 43.3012701892219 cm2
Triangle équilatéral de 5 cm contient un air de 10.8253175473055 cm2
Triangle équilatéral de 3 cm contient un air de 3.89711431702997 cm2


Dernière mise à jour : Samedi, le 25 août 2012