matrice à partir d'un fichier ( module graphe)

matrice à partir d'un fichier ( module graphe) - Java - Programmation

Marsh Posté le 05-12-2011 à 19:20:30    

salut
 
j'ai programmer une petite application mode console,mais elle ne marche pas correctement
classe Main

Code :
  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.util.Scanner;
  4. public class Main {
  5.    public static void main(String[] args) throws IOException {
  6.      Scanner fichier = new Scanner(System.in);
  7. System.out.println("entrer le nom de fichier" );
  8. String matrice = fichier.nextLine(); 
  9.      File f = new File(matrice +".txt" );
  10.      AfficheFichier  m = new AfficheFichier (f);
  11. }
  12. }

 
classe AfficheFichier

Code :
  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.util.Scanner;
  7. import java.util.StringTokenizer;
  8. public class AfficheFichier {
  9.    public int N;
  10.    public int M;
  11.    public int tab[][];
  12. int cptLigne=0;
  13.        public AfficheFichier(File txt) throws IOException{
  14.        BufferedReader lecteurAvecBuffer=null;
  15.         String ligne;
  16.      
  17.         StringTokenizer st;
  18.         try
  19.         {
  20.         lecteurAvecBuffer = new BufferedReader(new FileReader(txt)); //Permet de charger le fichier
  21.      
  22.        }
  23.    catch(FileNotFoundException exc){
  24.          System.out.println("Erreur d'ouverture" );
  25.         }
  26.    for (int num_ligne=1; (((ligne = lecteurAvecBuffer.readLine()) != null)); num_ligne++)
  27.    { //Parcourir le fichier
  28.      
  29.      if (num_ligne == 1) // 1ère ligne contient le nombre de lignes de
  30. // l'entrepot
  31. {
  32. N = new Integer(ligne).intValue();
  33. System.out.println("largeur"+N);
  34. }
  35.   else if (num_ligne == 2) // 2ème ligne contient le nombre de
  36. {
  37. M = new Integer(ligne).intValue();
  38.    
  39.    System.out.println("hauteur"+M);
  40.    
  41. }
  42.    
  43.     else if (num_ligne >= 3)
  44.      { //Construit la matrice largeur*hauteur avec le contenu du fichier   
  45.           st = new StringTokenizer(ligne," " );
  46.           tab =  new int [N][M];
  47.           for (int i=0; i<=N; i++)
  48.            {
  49.              
  50.              for (int j=0; j<=M; j++) 
  51.              {
  52.           while(st.hasMoreTokens()){
  53.          
  54.          
  55.            tab[i][j]=Integer.parseInt(st.nextToken());
  56.          
  57.            System.out.print(" " + tab[i][j]);
  58.          
  59.           }
  60.          
  61.          }
  62.    }System.out.println(" " );
  63.          
  64.   }
  65.    
  66.      
  67.  
  68.        }
  69.        
  70.       System.out.println();
  71. Scanner type = new Scanner(System.in);
  72. System.out.println("type de martice: adjacence or incidence" );
  73. String matrice = type.nextLine();
  74. String name3 = "adjacence";
  75. String name2 = "incidence";
  76. //matrice adjacence
  77. if ( matrice.equals(name3)){
  78.   System.out.println("les Sommets sont:" );
  79.    for (int i=0;i <N; i++) {
  80. System.out.print("S"+(+i+1) );
  81.    }
  82. System.out.println(); 
  83. for (int i=0; i<N; i++) {
  84. for (int j=0; j<M;j++){
  85. if (tab[i][j]==0){
  86. System.out.println("la sommet S"+(i+1)+" n'a pas une relation avec la sommet S"+(j+1));
  87. } else {
  88. System.out.println("la sommet S"+(i+1)+" a une relation ( "+tab[i][j]+" ) avec la sommet S"+(j+1));
  89.                     }//esle
  90.                }//for j  
  91.   }//for i
  92. //matrice incidence
  93. } else if( matrice.equals(name2)) {
  94. System.out.println("les "+M+" Sommets sont:" );
  95.    for (int i=0;i <N; i++) {
  96. System.out.print("S"+(+i+1) );
  97.    }
  98. System.out.println("les "+M+" arcs sont:" );
  99.    for (int j=0; j<M; j++) {
  100. System.out.print("a"+(j+1) );
  101.    }
  102. System.out.println("" );
  103. for (int i=0; i<N; i++) {
  104.             for (int j=0; j<M;j++){
  105.             if (tab[i][j]==1){
  106.              System.out.println("la sommet S"+(i+1)+" est l'exterimité intiale de l'arc a"+(j+1));
  107.             } else if (tab[i][j]== -1){
  108.                  System.out.println("la sommet S"+(i+1)+" est l'exterimité terminale de l'arc a"+(j+1));
  109.             }else if (tab[i][j]== 0){
  110.                  System.out.println("la sommet S"+(i+1)+" n'a pas une relation avec de l'arc a"+(j+1));
  111.             }
  112.                                  }//for j  
  113.                               }//for i
  114. }
  115. }
  116.      
  117.      
  118.      
  119.        }


le fichier a tester est : matrice.txt
5
5
0 1 1 1 0
0 1 0 1 0
0 1 1 1 0
1 1 1 1 1
0 0 0 1 0
le résulta doit être sur cette forme
largeur5
hauteur5
0 1 1 1 0
0 1 0 1 0
0 1 1 1 0
1 1 1 1 1
0 0 0 1 0
type de martice: adjacence or incidence
adjacence
les  Sommets sont:
S1 S2 S3 S4 S5
....
 
 
 
 
merci d'avance

Reply

Marsh Posté le 05-12-2011 à 19:20:30   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed