diff --git a/src/Equation.java b/src/Equation.java index 1b40eeaac0d1591956a9eb1aea65236f28bed13e..21c6e03f6b6a72e448fe463142f0b34d9d9addea 100644 --- a/src/Equation.java +++ b/src/Equation.java @@ -1,5 +1,4 @@ import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class Equation { @@ -54,6 +53,10 @@ public class Equation { return mat; } + public Double getMatAtId(int w, int h) { + return mat[w][h]; + } + public void setMat(Double n, int w, int h) { this.mat[w][h] = n; } @@ -81,48 +84,85 @@ public class Equation { } /** - * Créer le vecteurs éléments de droite et la matrice Amxn + * Créer le vecteurs éléments de droite et la matrice Amxn quand le sens est à min * @param elements * @param line */ - public void createEq(String[] elements, int line) { - // Vecteur de droite - addInRightVec(elements); - // Matrice - addInMat(elements, line); - } - - /** - * Ajouter dans le vecteur de droite - * @param elements - */ - public void addInRightVec(String[] elements){ + public void createMinEq(String[] elements, int line) { try { + // vecteur de droite setRightVec(Double.parseDouble(elements[elements.length - 1])); + + // Matrice + for (int i = 0; i < 5; i++) { + setMat(Double.parseDouble(elements[i]), line, i); + } + } catch (NumberFormatException ex) { ex.printStackTrace(); } } /** - * Ajouter dans la matrice + * Créer le vecteurs éléments de droite et la matrice Amxn quand le sens est à max * @param elements * @param line */ - public void addInMat(String[] elements, int line) { + public int createMaxEq(String[] elements, int line) { try { - for (int i = 0; i < 5; i++) { - setMat(Double.parseDouble(elements[i]), line, i); + // vecteur de droite + switch(elements[5]) { + case "=": // Si ax=b => ax <= b; ax >= b + // Vecteur de droite + setRightVec(Double.parseDouble(elements[elements.length - 1])); + setRightVec(Double.parseDouble(elements[elements.length - 1])); + + // Matrice + for (int i = 0; i < 5; i++) { + setMat(Double.parseDouble(elements[i]), line, i); + setMat(Double.parseDouble(elements[i]), line+1, i); + } + // On rajoute une ligne + line += 1; + break; + case ">=": + // Vecteur de droite + setRightVec(-Double.parseDouble(elements[elements.length - 1])); + + // Matrice + for (int i = 0; i < 5; i++) { + setMat(-Double.parseDouble(elements[i]), line, i); + } + break; + case "<=": + // Vecteur de droite + setRightVec(Double.parseDouble(elements[elements.length - 1])); + + // Matrice + for (int i = 0; i < 5; i++) { + setMat(Double.parseDouble(elements[i]), line, i); + } + break; } - } catch(NumberFormatException ex) { + + } catch (NumberFormatException ex) { ex.printStackTrace(); } + return line; + } + + /** + * Ajouter dans le vecteur de droite + * @param elements + */ + public void addInRightVec(String[] elements){ + } /** * Print les vecteurs et la matrice */ - public void printEq(){ + public void printEq(int width){ // Sens System.out.println("Sens: " + getSens()); @@ -132,7 +172,16 @@ public class Equation { // Vecteur membre de droite System.out.println("Vecteur membre de droite: " + getRightVec()); + System.out.println("Matrice Amxn:"); // Matrice Amxn - System.out.println("Matrice Amxn: " + Arrays.deepToString(getMat())); + for(int i = 0; i < width; i ++) { + for(int j = 0; j < 5; j ++) { + if(getMatAtId(i, j) < 0) + System.out.print(getMatAtId(i, j) + " "); + else + System.out.print(" " + getMatAtId(i, j) + " "); + } + System.out.println(); + } } } diff --git a/src/Main.java b/src/Main.java index d320e2f0506359db25962b67900a566cb458fb82..ec1e8e20dbb1b3a568c536b37ca272f1bcf96fd7 100644 --- a/src/Main.java +++ b/src/Main.java @@ -18,7 +18,7 @@ public class Main { String[] elements; int widthMat = nbLines(sc); sc = new Scanner(f); // remettre le scanner à la première ligne - Equation eq = new Equation(widthMat); + Equation eq = new Equation(widthMat*2); // ajout de ligne supp si sens: max et = donc + 1 ligne int line = 0; // Max / Min + function obj @@ -26,21 +26,22 @@ public class Main { elements = firstLine.split(";"); eq.setFirstLine(elements); - if(eq.getSens().equals("min")) { - // S.C. - while (sc.hasNextLine()) { - String tmp = sc.nextLine(); - elements = tmp.split(";"); - eq.createEq(elements, line); - line++; + + // S.C. + while (sc.hasNextLine()) { + String tmp = sc.nextLine(); + elements = tmp.split(";"); + + if(eq.getSens().equals("min")) { + eq.createMinEq(elements, line); + } else { + line = eq.createMaxEq(elements, line); } - } else { - // TODO reverse eq - System.out.println("Reverse eq"); + line++; } // Print - eq.printEq(); + eq.printEq(line); sc.close(); } catch (FileNotFoundException e) { throw new RuntimeException(e);