/* Utilisation du return dans une fonction void  */

public class ExempleReturnDansFonctionVoid {

///////////////////////////////////////////////////

  /* Type agrégé de stockage d'une direction     */
  /* en deux dimensions                          */
  
  static class Direction2D {
    double x = 0.0;
    double y = 0.0; };

  /* Normalisation d'une Direction2D             */
  /* Interruption de la fonction par return      */
  /* si la direction est le vecteur nul          */
    
  
  static void normalisation1(Direction2D d) {
    double dist = d.x*d.x+d.y*d.y;
    if ( dist == 0.0 ) {
      return; }
    dist = Math.sqrt(dist);
    d.x = d.x/dist;
    d.y = d.y/dist;
  }

  /* Normalisation d'une Direction2D             */
  
  static void normalisation2(Direction2D d) {
    double dist = d.x*d.x+d.y*d.y;
    if ( dist != 0.0 ) {
      dist = Math.sqrt(dist);
      d.x = d.x/dist;
      d.y = d.y/dist; }
  }
  
  /* Programme principal                         */

  public static void main(String [] args) {
    Direction2D da = new Direction2D();
    Direction2D db = new Direction2D();
    Direction2D dc = new Direction2D();
    Direction2D dd = new Direction2D();
    dc.x = 3.0;
    dc.y = 4.0;
    dd.x = 3.0;
    dd.y = 4.0;
    normalisation1(da);
    normalisation2(db);
    normalisation2(dc);
    normalisation2(dd);
    Ecran.formater("%f %f\n",da.x,da.y);
    Ecran.formater("%f %f\n",db.x,db.y);
    Ecran.formater("%f %f\n",dc.x,dc.y);
    Ecran.formater("%f %f\n",dd.x,dd.y);
  }

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