TP 13 exo1: implement odd and even elements counting with callbacks
[TD_C.git] / TP_13 / exo1 / src / main.c
index 9f23749fbc3b2def57ca83457ac762d44e426e0a..2c81a631b28d3abb19c28c4eb6bf4d0ce3e0bd7f 100644 (file)
@@ -7,19 +7,45 @@
 
 int main() {
     int* tab = NULL;
-    const unsigned tab_size = 11;
-    tab = create_tab(tab, tab_size);
-
-    printf("%d\n", tab_size);
-
-    display_array(tab, tab_size);
-
-    const unsigned tab_new_size = 20;
-    tab = resize_tab(tab, tab_new_size);
-
-    printf("%d\n", tab_new_size);
-
-    display_array(tab, tab_new_size);
+    unsigned tab_size = 0;
+    int errno = 0;
+    int choice = 0;
+
+    printf("=== Saisie initiale ===\n\n");
+    tab = prompt_array(tab, &tab_size);
+
+    do {
+        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");
+            continue;
+        }
+        switch (choice) {
+            case 1:
+                tab = do_concat(tab, &tab_size);
+                break;
+            case 2:
+                do_sort(tab, tab_size);
+                break;
+            case 3:
+                display_array(tab, tab_size);
+                break;
+            case 4:
+                do_count(tab, tab_size);
+                break;
+            case 5:
+                printf("\nLe nombre d'entiers pairs dans le tableau est %d\n", count_tab_criteria(tab, tab_size, is_even));
+                break;
+            case 6:
+                printf("\nLe nombre d'entiers impairs dans le tableau est %d\n", count_tab_criteria(tab, tab_size, is_odd));
+                break;
+            default:
+                /* do nothing, unused code path */
+                break;
+        }
+    } while (choice != 7);
 
     free_tab(tab);
     exit(EXIT_SUCCESS);