import static java.lang.System.*;  // cf. Java 5
/**
  * Classe 'mat1c' :  Matrice de 1-connexion des 1-graphes & Conversion en matrice d'adjacence booléenne
  * @author   (c) ~/2A env.  H. Nguyen-Phu
  * @version  1.0   2006.08.27  (for Java 5.0)
  * @see      tablo2d
  */
public class mat1c  {
 /**
   * Méthode principale publique 'main(...)'.
   * Elle utilise la classe 'es' pour accéder aux méthodes de classe:
   *    attente() - affichage de l'heure courante
   * @param args Tableau de chaînes pour ligne de commande éventuelle
   */
   public static void main(String args[])  {

        String txt;
        byte  m1[][] =  {  
        // A la place de 'byte', on peut employer aussi: 'short', 'int'  ou 'long'.
           {0, 1, 1, 0},
           {0, 0, 0, 1},
           {0, 1, 1, 1},
           {0, 0, 0, 0}
                       };
         int Nmax = m1.length;
         boolean [][] mb = new boolean[Nmax][Nmax];

         txt  ="mat1c: Emploi  typique de tableaux 2D\n";
         txt +="-----  Application: Manipulation des 1-graphes par des matrices ...\n";
         txt +="                    (c)~/2A env. - MAJ : 2006.08.27 12h00\n";
         txt +="\nExemple 1 : D\u00e9claration et d\u00e9fintion par affectaions internes \n\n";
         txt +="  int  m1[][] = {\n";
         txt +="    {0, 1, 1, 0},\n";
         txt +="    {0, 0, 0, 1},\n";
         txt +="    {0, 1, 1, 1},\n";
         txt +="    {0, 0, 0, 0}\n";
         txt +="                };\n";
         txt +="\nExemple 2 :  D\u00e9clation d'une matrice bool. de m\u00eame dimension\n\n";    
         txt +="  int Nmax = m1.length;\n";
         txt +="  boolean [][] mb = new boolean[Nmax][Nmax];\n";
         txt +="\nExemple 3 :  Conversion 'm1' Vers  'mb' & Affichage de 'mb'\n\n";
         txt +="  for(int i= 0; i< Nmax; i++)  {    // 2 boucles pour convertir 'm1' en 'mb'\n";
         txt +="     for(int j= 0; j< Nmax; j++)  { // et aussi afficher le contenu de 'mb'\n";
         txt +="        mb[i][j] =  (m1[i][j] == 1 ? true : false);\n";
         txt +="        out.print(mb[i][j]+''\\t'');\n";
         txt +="     }\n";
         txt +="     out.println();\n";
         txt +="  }\n";
         out.println(txt);

	 out.println("\nContenu de la matrice bool. 'mb' :\n");
         for(int i= 0; i< Nmax; i++)  {    // 2 boucles pour convertir 'm1' en 'mb' 
            for(int j= 0; j< Nmax; j++)  { // et aussi afficher le contenu de 'mb'
                mb[i][j] =  (m1[i][j] == 1 ? true : false);
                out.print(mb[i][j]+  "\t");
            }
            out.printf("\n");   // cf. Java 5
         }

         out.println("\n\nAdresse de m1 (en hexad\u00e9cimal) = "+m1);
         out.println("Adresse de mb (en hexad\u00e9cimal) = "+mb);
         m1 = null; mb = null;
         System.gc(); 
         out.println("\n\tLib\u00e9rations des m\u00e9moires cr\u00e9\u00e9es par 'new' !\n");
         out.println("Adresse de m1 (en hexa.) = "+m1);
         out.println("Adresse de mb (en hexa.) = "+mb);

         es.attente();   // Stabilisation de l'écran pour lecture ...
   }

}