class Clause { private int [] var; Clause () { var = new int[0]; } Clause ( int n ) { var = new int[n]; } public void set ( int i, int val ) { var[i] = val; } public int get ( int i ) { return var[i]; } class Formule { private Clause [] form; Formule () { form = new Clause[0]; } Formule ( int n ) { form = new Clause[n]; } Formule ( String fichier ) { } public void set ( int i, Clause c ) { form[i] = c; } public Clause[] get ( int i ) { return form[i]; } } class dPutnam { public static void afficheDimacs ( String fichier ) { try { FileReader fr = new FileReader ( fichier ); BufferedReader br = new BufferedReader ( fr ); try { String ligne = br.readLine(); //première ligne StringTokenizer st = new StringTokenizer ( ligne ); String s = st.nextToken(); //premier mot ( c ) while ( s == "c" ) { ligne = br.readLine(); st = new StringTokenizer ( ligne ); s = st.nextToken(); } /* Ligne commençant par p */ ligne = br.readLine(); st = new StringTokenizer ( ligne ); s = st.nextToken(); //premier mot ( p ) s = st.nextToken(); // ( cnf ) s = st.nextToken(); Deug.println("Nombre de variables : "+s); int x = Integer.parseInt(s); s = st.nextToken(); Deug.println("Nombre de clauses : "+s); int y = Integer.parseInt(s); /* La formule */ for ( int i = 0; i < y; i++ ) { ligne = br.readLine(); st = new StringTokenizer ( ligne ); /* Boolean pour savoir si on doit écrire \/ */ boolean test = false; Deug.print("( "); do { s = st.nextToken(); if ( test ) { Deug.print(" \\/ "); } if ( Integer.parseInt(s) > 0 ) { Deug.print("x"+s); test = true; } if ( Integer.parseInt(s) < 0 ) { int a = -Integer.parseInt(s); Deug.print("~x"+a); test = true; } } while ( st.hasMoreTokens () ); Deug.print(" )"); if ( i < y-1 ) Deug.print(" /\\ "); } Deug.println(); } catch ( IOException e ) { System.out.println("Fichier "+fichier+" incorrect"); } } catch ( FileNotFoundException e ) { System.out.println("Le fichier "+fichier+" n'existe pas"); } } public static void main (String[] args) { afficheDimacs("test.dim"); }