Adress a FIXME on duplicated values insertion.
[TP_POO.git] / Entiers / Entiers.java
CommitLineData
bc48a285
JB
1
2class Entiers {
3 private int int_array[];
4 private int array_size;
5 private int current_size;
6
7 private void setSize(int size) {
8 array_size = size;
9 }
10
11 private int getSize() {
12 return array_size;
13 }
14
15 private void setCurrentSize(int index) {
16 current_size = index;
17 }
18
19 private 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 (is_full()) {
31 System.out.println("Tableau plein");
32 return false;
33 }
471c182b
JB
34 int pos = binarySearch(0, getCurrentSize(), value);
35 if (pos != -1)
36 {
37 System.out.println("Valeur à inserer déjà présente");
38 return false;
39 }
bc48a285
JB
40 int i;
41 for (i = getCurrentSize() - 1; (i >= 0 && int_array[i] > value); i--) {
42 int_array[i + 1] = int_array[i];
43 }
44 int_array[i + 1] = value;
45 current_size++;
46 return true;
47 }
48
49 private int binarySearch(int first, int last, int value) {
50 if (last < first)
51 return -1;
52 int middle = (first + last) / 2;
53 if (value == int_array[middle])
54 return middle;
55 if (value > int_array[middle])
56 return binarySearch((middle + 1), last, value);
57 return binarySearch(first, (middle -1), value);
58 }
59
60 public boolean supprimer(int value) {
61 if (is_empty()) {
62 System.out.println("Aucune valeur à supprimer");
63 return false;
64 }
65
66 // Find position of element to be deleted
67 int pos = binarySearch(0, getCurrentSize(), value);
68
69 if (pos == -1)
70 {
71 System.out.println("Valeur à supprimer inexistante");
72 return false;
73 }
74
75 // Deleting element
76 for (int i = pos; i < getCurrentSize() - 1; i++) {
77 int_array[i] = int_array[i + 1];
78 }
79
80 current_size--;
81 return true;
82 }
83
84 private boolean is_full() {
85 return (getCurrentSize() >= getSize());
86 }
87
88 private boolean is_empty() {
89 return (getCurrentSize() == 0);
90 }
91
92 public void afficher() {
93 for (int i = 0; i < getSize(); i++) {
94 System.out.println("element " + i + " " + int_array[i]);
95 }
96 }
97
98 public static void main(String[] args) {
99 Entiers integer = new Entiers(5);
100
101 integer.inserer(1);
102
103 integer.afficher();
104
105 integer.inserer(12);
106
107 integer.afficher();
108
109 integer.inserer(3);
110
111 integer.afficher();
112
113 integer.inserer(0);
114
115 integer.inserer(1);
116
117 integer.afficher();
118
119 integer.supprimer(12);
120
121 integer.afficher();
122 System.out.println("Current size " + integer.getCurrentSize());
123
124 integer.supprimer(1);
125
126 integer.afficher();
127 System.out.println("Current size " + integer.getCurrentSize());
128
129
130 }
131}