/* Utilisation de paramètres d'entête en tant    */
/* que variables locales                         */

public class ExempleParametresEnteteCommeVariables {

///////////////////////////////////////////////////
  
  /* Type agrege de stockage du cosinus,         */
  /* du sinus et de la tangente d'un angle       */

  static class CosSinTan {
    double cos = 1.0;
    double sin = 0.0;
    double tan = 0.0; };

  /* Calcul du cosinus, du sinus                 */
  /* et de la tangente                           */
  /* d'un angle donne en degres                  */

  static CosSinTan calculCosSinTan1(double angle) {
    double a;
    CosSinTan res = new CosSinTan();
    a = angle*Math.PI/180.0;
    res.cos = Math.cos(a);
    res.sin = Math.sin(a);
    res.tan = Math.tan(a);
    return res;
  }

  /* Calcul du cosinus, du sinus                   */
  /* et de la tangente d'un angle                  */
  /* donne en degres                               */
  /* Détournement du paramètre d'entête angle      */
  /* utilisé comme une variable locale             */

  static CosSinTan calculCosSinTan2(double angle) {
    CosSinTan res = new CosSinTan();
    angle = angle*Math.PI/180.0;
    res.cos = Math.cos(angle);
    res.sin = Math.sin(angle);
    res.tan = Math.tan(angle);
    return res;
  }

  /* Programme principal                         */

  public static void main(String [] args) {
    double angle;
    CosSinTan cst;
    Ecran.afficher("SVP, l'angle : ");
    angle = Clavier.saisirDouble();  
    cst = calculCosSinTan1(angle);
    Ecran.formater("sin(%f) = %f\n",angle,cst.sin);
    Ecran.formater("cos(%f) = %f\n",angle,cst.cos);
    Ecran.formater("tan(%f) = %f\n",angle,cst.tan);
    Ecran.sautDeLigne();
    cst = calculCosSinTan2(angle);
    Ecran.formater("sin(%f) = %f\n",angle,cst.sin);
    Ecran.formater("cos(%f) = %f\n",angle,cst.cos);
    Ecran.formater("tan(%f) = %f\n",angle,cst.tan);
  } 

///////////////////////////////////////////////////
}