return tab_dest;
}
-int* resize_tab(int tab[], unsigned new_tab_size) {
+int* resize_tab(int tab[], unsigned old_tab_size, unsigned new_tab_size) {
tab = realloc(tab, sizeof(int) * new_tab_size);
+ if (old_tab_size < new_tab_size) {
+ for (unsigned i = old_tab_size; i < new_tab_size; i++) {
+ tab[i] = 0;
+ }
+ }
return tab;
}
/* number of occurences of an element in an unsorted array */
-int count_tab_element(int tab[], unsigned tab_size, int element) {
+unsigned count_tab_element(int tab[], unsigned tab_size, int element) {
unsigned el_count = 0;
+
for (unsigned i = 0; i < tab_size; i++) {
if (tab[i] == element) {
el_count++;
return el_count;
}
+unsigned count_tab_criteria(int tab[], unsigned tab_size, count_criteria_cb c_criteria) {
+ unsigned cr_count = 0;
+
+ for (unsigned i = 0; i < tab_size; i++) {
+ if (c_criteria(tab[i])) {
+ cr_count++;
+ }
+ }
+ return cr_count;
+}
+
+bool is_even(int a) {
+ return (a % 2 == 0);
+}
+
+bool is_odd(int a) {
+ return (a % 2 != 0);
+
+}
+
void sort_tab(int tab[], unsigned tab_size, criteria_cb criteria) {
sort_bubble_array(tab, tab_size, criteria);
}