From 3abdb1e7384874b5c91b767d4c3ed05a2602e920 Mon Sep 17 00:00:00 2001
From: "juliano.souzaluz" <juliano.souza-luz@etu.hesge.ch>
Date: Sun, 8 Jan 2023 19:34:37 +0100
Subject: [PATCH] =?UTF-8?q?condition=20de=20retour=20du=20tableau=20auxili?=
 =?UTF-8?q?aire=20=C3=A0=20revoir?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/Main.java    |  3 +--
 src/Simplex.java | 25 ++++++++++++++++++++++---
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/src/Main.java b/src/Main.java
index bc537ad..0eb5357 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -83,10 +83,9 @@ public class Main {
         int phase = spx.which_phase();
         if (phase != -1) {
             spx.tabAux(phase);
-            spx.printSimplex(spx.getTabAux(), "Tableau Auxiliaire", 3);
         } else {
             spx.pivot();
-            spx.printSimplex(spx.getMatEcart(),"pivot", 3);
+            spx.printSimplex(spx.getMatEcart(), "pivot", 3);
             System.out.println("Nombre de pivot: " + spx.getNbPivot());
         }
 
diff --git a/src/Simplex.java b/src/Simplex.java
index 1465fe5..cb4e4d7 100644
--- a/src/Simplex.java
+++ b/src/Simplex.java
@@ -11,9 +11,11 @@ public class Simplex {
     public Matrix getTabAux() {
         return tabAux;
     }
+
     public Matrix getMatEcart() {
         return matEcart;
     }
+
     public int getNbPivot() {
         return nbPivot;
     }
@@ -79,14 +81,31 @@ public class Simplex {
             for (int j = 0; j < this.tabAux.getY(); j++) {
                 if (i < this.matEcart.getX() && j < this.matEcart.getY())
                     this.tabAux.setData(i, j, this.matEcart.getData(i, j));
-                else if(i == this.tabAux.getX() - 1)
+                else if (i == this.tabAux.getX() - 1)
                     this.tabAux.setData(i, j, tabRes[j]);
                 else
-                    this.tabAux.setData(i, j, this.matEcart.getData(i, j-5));
+                    this.tabAux.setData(i, j, this.matEcart.getData(i, j - this.matEcart.getX()));
             }
         }
-        if(signe(this.tabAux.getData(this.tabAux.getX(), this.tabAux.getY()))) {
+        this.tabAux.matrixPrint("Tableau auxiliaire ", 2);
+        double valLastCase = this.tabAux.getData(this.tabAux.getX() - 1, this.tabAux.getY() - 1);
+        // si la dernière case est négative, il faut envoyer le tableau "basique" dans la méthode du pivot
+        if (valLastCase < 0) {
+            Matrix newMatEcart = this.matEcart;
+            newMatEcart.matrixFill(this.matEcart.getX(), this.matEcart.getY(), this.tabAux.getDatas());
+            newMatEcart.matrixPrint("Nouvelle matrice ", 2);
+            this.matEcart = newMatEcart;
+            //this.matEcart = this.tabAux;
+            pivot();
+            printSimplex(getMatEcart(), "pivot", 3);
+            System.out.println("Nombre de pivot: " + getNbPivot());
 
+        } else if (valLastCase > 0) {
+            // si elle est positive , il n'y a pas de solutions admissibles
+            System.out.println("Il n'y a pas de solutions admissibles pour ce problème");
+        } else // = 0
+        {
+            System.out.println("Le min/max est 0");
         }
     }
 
-- 
GitLab