TP2: Add code skeleton for the Compactable interface.
[TP_POO.git] / TP2 / Entiers.java
CommitLineData
54d3f5b3
JB
1
2class Entiers extends Structure {
3 private int int_array[];
4 private int array_size;
5 private int current_size;
6
7 public void setSize(int size) {
8 array_size = size;
9 }
10
11 public int getSize() {
12 return array_size;
13 }
14
15 public void setCurrentSize(int index) {
16 current_size = index;
17 }
18
19 public int getCurrentSize() {
20 return current_size;
21 }
22
23 Entiers(int size) {
24 int_array = new int[size];
25 setSize(size);
26 setCurrentSize(0);
27 }
28
29 public boolean inserer(int value) {
30 if (isFull()) {
31 System.out.println("Tableau plein");
32 return false;
33 }
34 if (isEmpty()) {
35 int_array[0] = value;
36 current_size++;
37 return true;
38 } else {
39 for (int i = 0; i < getCurrentSize(); i++) {
40 if (int_array[i] == value) {
41 return true;
42 } else if (int_array[i] > value) {
43 for (int j = getCurrentSize(); j > i; j--) {
44 int_array[j] = int_array[j - 1];
45 }
46 int_array[i] = value;
47 current_size++;
48 return true;
49 }
50 }
51 }
52 /**
53 * The current value to add is > to all elements in the tab.
54 * So add it at the end.
55 */
56 int_array[getCurrentSize()] = value;
57 current_size++;
58 return true;
59 }
60
61 private int binarySearch(int first, int last, int value) {
62 if (last < first)
c7c510eb 63 //FIXME: should not return an integer
54d3f5b3
JB
64 return -1;
65 int middle = (first + last) / 2;
66 if (value == int_array[middle])
67 return middle;
68 else if (value > int_array[middle])
69 return binarySearch((middle + 1), last, value);
70 return binarySearch(first, (middle -1), value);
71 }
72
73 public boolean supprimer(int value) {
74 if (isEmpty()) {
75 System.out.println("Aucune valeur à supprimer");
76 return false;
77 }
78
79 for (int i = 0; i < getCurrentSize(); i++) {
80 if (int_array[i] == value) {
81 // Deleting the element in the tab
82 for (int j = i; j < getCurrentSize() - 1; j++) {
83 int_array[j] = int_array[j + 1];
84 }
85 current_size--;
86 return true;
87 }
88 }
89 return true;
90 }
91
92 private boolean isFull() {
93 return (getCurrentSize() >= getSize());
94 }
95
96 private boolean isEmpty() {
97 return (getCurrentSize() == 0);
98 }
99
100 public void afficher() {
c7c510eb
JB
101 String className = this.getClass().getSimpleName();
102 System.out.println("---- " + className + " ----");
54d3f5b3
JB
103 for (int i = 0; i < getCurrentSize(); i++) {
104 System.out.println("element " + i + " : " + int_array[i]);
105 }
106 }
107
97929775
JB
108 public void compacter(int nElements) {
109
110 }
111
54d3f5b3 112}