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;
}
int* create_tab(int tab[], unsigned tab_size);
void free_tab(int tab[]);
int* concat_tab(int tab1[], unsigned tab_size1, int tab2[], unsigned tab_size2);
-int* resize_tab(int tab[], unsigned tab_size);
+int* resize_tab(int tab[], unsigned old_tab_size, unsigned new_tab_size);
unsigned count_tab_element(int tab[], unsigned tab_size, int element);
unsigned count_tab_criteria(int tab[], unsigned tab_size, count_criteria_cb c_criteria);
void sort_tab(int tab[], unsigned tab_size, criteria_cb criteria);
printf("4) Compter le nombre d'occurence d'un entier dans le tableau.\n");
printf("5) Compter le nombre d'entiers pairs dans le tableau.\n");
printf("6) Compter le nombre d'entiers impairs dans le tableau.\n");
- printf("7) Quitter.\n");
+ printf("7) Redimensionner le tableau.\n");
+ printf("8) Quitter.\n");
}
int* do_concat(int array[], unsigned* size) {
printf("La valeur %d est presente %d fois dans le tableau\n", search_value, count_tab_element(array, size, search_value));
}
+void do_resize(int array[], unsigned* old_size) {
+ int errno = 0;
+ unsigned new_size = 0;
+
+ errno = prompt_value("\nNouvelle taille?", (int*)&new_size);
+ handle_prompt_error(errno);
+ array = resize_tab(array, *old_size, new_size);
+ *old_size = new_size;
+}
+
void display_array(int array[], unsigned size) {
if (array != NULL) {
printf("\n--array begin--\n");
int* do_concat(int array[], unsigned* size);
void do_sort(int array[], unsigned size);
void do_count(int array[], unsigned size);
+void do_resize(int array[], unsigned* size);
void display_array(int array[], unsigned size);
display_choice_menu();
errno = prompt_value("Choix?", &choice);
handle_prompt_error(errno);
- if (1 > choice || 7 < choice) {
- printf("\nFaire un choix compris entre 1 et 7\n");
+ if (1 > choice || 8 < choice) {
+ printf("\nFaire un choix compris entre 1 et 8\n");
continue;
}
switch (choice) {
case 6:
printf("\nLe nombre d'entiers impairs dans le tableau est %d\n", count_tab_criteria(tab, tab_size, is_odd));
break;
+ case 7:
+ do_resize(tab, &tab_size);
+ break;
default:
/* do nothing, unused code path */
break;
}
- } while (choice != 7);
+ } while (choice != 8);
free_tab(tab);
exit(EXIT_SUCCESS);