X-Git-Url: https://git.piment-noir.org/?p=TP_POO.git;a=blobdiff_plain;f=Entiers%2FEntiers.java;fp=Entiers%2FEntiers.java;h=752546b193264b2afb3923299edbbd79976d3201;hp=0000000000000000000000000000000000000000;hb=bc48a28596ee8602a6872379df217cc83a306470;hpb=b48ca56a1f3dd80b09d1840121de5e694a989fb8 diff --git a/Entiers/Entiers.java b/Entiers/Entiers.java new file mode 100644 index 0000000..752546b --- /dev/null +++ b/Entiers/Entiers.java @@ -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()); + + + } +}