Properly add Affichable interface.
[TP_POO.git] / TP2 / Entiers.java
diff --git a/TP2/Entiers.java b/TP2/Entiers.java
new file mode 100644 (file)
index 0000000..b4cffb1
--- /dev/null
@@ -0,0 +1,107 @@
+
+class Entiers extends Structure {
+    private int int_array[];
+    private int array_size;
+    private int current_size;
+
+    public void setSize(int size) {
+        array_size = size;
+    }
+
+    public int getSize() {
+        return array_size;
+    }
+
+    public void setCurrentSize(int index) {
+        current_size = index;
+    }
+
+    public int getCurrentSize() {
+        return current_size;
+    }
+
+    Entiers(int size) {
+        int_array = new int[size];
+        setSize(size);
+        setCurrentSize(0);
+    }
+
+    public boolean inserer(int value) {
+        if (isFull()) {
+            System.out.println("Tableau plein");
+            return false;
+        }
+        if (isEmpty()) {
+            int_array[0] = value;
+            current_size++;
+            return true;
+        } else {
+            for (int i = 0; i < getCurrentSize(); i++) {
+                if (int_array[i] == value) {
+                    return true;
+                } else if (int_array[i] > value) {
+                    for (int j = getCurrentSize(); j > i; j--) {
+                        int_array[j] = int_array[j - 1];
+                    }
+                    int_array[i] = value;
+                    current_size++;
+                    return true;
+                }
+            }
+        }
+        /**
+         * The current value to add is > to all elements in the tab.
+         * So add it at the end.
+         */
+        int_array[getCurrentSize()] = value;
+        current_size++;
+        return true;
+    }
+
+    private int binarySearch(int first, int last, int value) {
+        if (last < first)
+            //FIXME: should not return an integer 
+            return -1;
+        int middle = (first + last) / 2;
+        if (value == int_array[middle])
+            return middle;
+        else if (value > int_array[middle])
+            return binarySearch((middle + 1), last, value);
+        return binarySearch(first, (middle -1), value);
+    }
+
+    public boolean supprimer(int value) {
+        if (isEmpty()) {
+            System.out.println("Aucune valeur à supprimer");
+            return false;
+        }
+
+        for (int i = 0; i < getCurrentSize(); i++) {
+            if (int_array[i] == value) {
+                // Deleting the element in the tab
+                for (int j = i; j < getCurrentSize() - 1; j++) {
+                    int_array[j] = int_array[j + 1];
+                }
+                current_size--;
+                return true;
+            }
+        }
+        return true;
+    }
+
+    private boolean isFull() {
+        return (getCurrentSize() >= getSize());
+    }
+
+    private boolean isEmpty() {
+        return (getCurrentSize() == 0);
+    }
+
+    public void afficher() {
+        System.out.println("---- entiers ----");
+        for (int i = 0; i < getCurrentSize(); i++) {
+            System.out.println("element " + i + " : " + int_array[i]);
+        }
+    }
+
+}