X-Git-Url: https://git.piment-noir.org/?p=TP_POO.git;a=blobdiff_plain;f=Entiers%2FEntiers.java;h=4eddd73f6e79aef06c6c64b74a814ffcc524d409;hp=0c813d9382995b2752c2a3f0136da5614d98541b;hb=fa0086ca7eb737d3d8d0370387584fd13cb96c02;hpb=9b4b86b9cd28faed5698cf9a5949a89f0088c159 diff --git a/Entiers/Entiers.java b/Entiers/Entiers.java index 0c813d9..4eddd73 100644 --- a/Entiers/Entiers.java +++ b/Entiers/Entiers.java @@ -1,6 +1,6 @@ class Entiers { - private int int_array[]; + private int[] int_array; private int array_size; private int current_size; @@ -27,70 +27,80 @@ class Entiers { } public boolean inserer(int value) { - if (is_full()) { + if (isFull()) { System.out.println("Tableau plein"); return false; } - int pos = binarySearch(0, getCurrentSize(), value); - if (pos != -1) - { - System.out.println("Valeur à inserer déjà présente"); - return false; - } - int i; - for (i = getCurrentSize() - 1; (i >= 0 && int_array[i] > value); i--) { - int_array[i + 1] = int_array[i]; + 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; + } + } } - int_array[i + 1] = value; + /** + * 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; - if (value > int_array[middle]) + else if (value > int_array[middle]) return binarySearch((middle + 1), last, value); - return binarySearch(first, (middle -1), value); + return binarySearch(first, (middle - 1), value); } public boolean supprimer(int value) { - if (is_empty()) { + if (isEmpty()) { 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; + 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 is_full() { + private boolean isFull() { return (getCurrentSize() >= getSize()); } - private boolean is_empty() { + private boolean isEmpty() { return (getCurrentSize() == 0); } public void afficher() { - for (int i = 0; i < getSize(); i++) { + String className = this.getClass().getSimpleName(); + System.out.println("---- " + className + " ----"); + for (int i = 0; i < getCurrentSize(); i++) { System.out.println("element " + i + " " + int_array[i]); } }