Add Entiers code exercice.
[TP_POO.git] / Entiers / Entiers.java
diff --git a/Entiers/Entiers.java b/Entiers/Entiers.java
new file mode 100644 (file)
index 0000000..752546b
--- /dev/null
@@ -0,0 +1,126 @@
+
+class Entiers {
+    private int int_array[];
+    private int array_size;
+    private int current_size;
+
+    private void setSize(int size) {
+        array_size = size;
+    }
+
+    private int getSize() {
+        return array_size;
+    }
+
+    private void setCurrentSize(int index) {
+        current_size = index;
+    }
+
+    private int getCurrentSize() {
+        return current_size;
+    }
+
+    Entiers(int size) {
+        int_array = new int[size];
+        setSize(size);
+        setCurrentSize(0);
+    }
+
+    public boolean inserer(int value) {
+        if (is_full()) {
+            System.out.println("Tableau plein");
+            return false;
+        }
+        //FIXME: Avoid duplicated values
+        int i;
+        for (i = getCurrentSize() - 1; (i >= 0 && int_array[i] > value); i--) {
+            int_array[i + 1] = int_array[i];
+        }
+        int_array[i + 1] = value;
+        current_size++;
+        return true;
+    }
+
+    private int binarySearch(int first, int last, int value) {
+        if (last < first)
+            return -1;
+        int middle = (first + last) / 2;
+        if (value == int_array[middle])
+            return middle;
+        if (value > int_array[middle])
+            return binarySearch((middle + 1), last, value);
+        return binarySearch(first, (middle -1), value);
+    }
+
+    public boolean supprimer(int value) {
+        if (is_empty()) {
+            System.out.println("Aucune valeur à supprimer");
+            return false;
+        }
+
+        // Find position of element to be deleted
+       int pos = binarySearch(0, getCurrentSize(), value);
+
+       if (pos == -1)
+       {
+           System.out.println("Valeur à supprimer inexistante");
+           return false;
+       }
+
+       // Deleting element
+       for (int i = pos; i < getCurrentSize() - 1; i++) {
+           int_array[i] = int_array[i + 1];
+       }
+
+       current_size--;
+       return true;
+    }
+
+    private boolean is_full() {
+        return (getCurrentSize() >= getSize());
+    }
+
+    private boolean is_empty() {
+        return (getCurrentSize() == 0);
+    }
+
+    public void afficher() {
+        for (int i = 0; i < getSize(); i++) {
+            System.out.println("element " + i + " " + int_array[i]);
+        }
+    }
+
+    public static void main(String[] args) {
+        Entiers integer = new Entiers(5);
+
+        integer.inserer(1);
+
+        integer.afficher();
+
+        integer.inserer(12);
+
+        integer.afficher();
+
+        integer.inserer(3);
+
+        integer.afficher();
+
+        integer.inserer(0);
+
+        integer.inserer(1);
+
+        integer.afficher();
+
+        integer.supprimer(12);
+
+        integer.afficher();
+        System.out.println("Current size " + integer.getCurrentSize());
+
+        integer.supprimer(1);
+
+        integer.afficher();
+        System.out.println("Current size " + integer.getCurrentSize());
+
+
+    }
+}