X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TP_13%2Fexo1%2Flib%2Fio.c;h=69b13d768f2b68e4cd0a01e01f2e23ab30a8368a;hb=093e45f1ff41d6a43353cf77cb522a0e9e12c811;hp=989e746aa237cd90d18c0b3861427deefd5f1bf2;hpb=475ee86d70921638c700bc0934441c7fe2c905d1;p=TD_C.git diff --git a/TP_13/exo1/lib/io.c b/TP_13/exo1/lib/io.c index 989e746..69b13d7 100644 --- a/TP_13/exo1/lib/io.c +++ b/TP_13/exo1/lib/io.c @@ -1,9 +1,9 @@ +#include #include #include #include "io.h" #include "array.h" -#include "utils.h" int prompt_value(const char* msg, int* result) { puts(msg); @@ -28,7 +28,10 @@ void display_choice_menu() { printf("2) Trier le tableau.\n"); printf("3) Afficher le tableau.\n"); printf("4) Compter le nombre d'occurence d'un entier dans le tableau.\n"); - printf("5) Quitter.\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) Redimensionner le tableau.\n"); + printf("8) Quitter.\n"); } int* do_concat(int array[], unsigned* size) { @@ -47,7 +50,7 @@ void do_sort(int array[], unsigned size) { int errno = 0; int choice = 0; bool done = false; - criteria_cb criteria; + s_criteria_cb sort_criteria; printf("\n=== Menu de tri ===\n\n"); printf("1) Croissant.\n"); @@ -65,22 +68,23 @@ void do_sort(int array[], unsigned size) { } while (!done); switch (choice) { case 1: - criteria = ascending; + sort_criteria = ascending; break; case 2: - criteria = descending; + sort_criteria = descending; break; case 3: - criteria = ascending_and_even; + sort_criteria = ascending_and_even; break; case 4: - criteria = ascending_and_odd; + sort_criteria = ascending_and_odd; break; default: - criteria = ascending; + /* sort ascending by default, unused code path */ + sort_criteria = ascending; break; } - sort_tab(array, size, criteria); + sort_tab(array, size, sort_criteria); } void do_count(int array[], unsigned size) { @@ -92,6 +96,26 @@ void do_count(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); + /* FIXME: one should able the set the array new content if new_size > *old_size + * for now, new values are zeroed */ + array = resize_tab(array, *old_size, new_size); + *old_size = new_size; +} + +void handle_prompt_error(int errno) { + if (errno != 0) { + printf("\nMerci de saisir un nombre entier, exiting\n"); + /* it's somewhat violent but better than looping forever */ + exit(EXIT_FAILURE); + } +} + void display_array(int array[], unsigned size) { if (array != NULL) { printf("\n--array begin--\n");