Rename one TP number.
[TD_C.git] / TP_7 / exo1 / exo1.c
diff --git a/TP_7/exo1/exo1.c b/TP_7/exo1/exo1.c
new file mode 100644 (file)
index 0000000..b57e2ac
--- /dev/null
@@ -0,0 +1,81 @@
+#include <stdio.h>
+#include <stdbool.h>
+
+//FIXME: Comment the code !!!
+
+void promptValue(int* addr) {
+    scanf("%d", addr);
+}
+
+// The efficiency of this swap alternative is debatable ..
+void xorSwap (int *v1, int *v2) {
+    if (v1 != v2) {
+        *v1 ^= *v2;
+        *v2 ^= *v1;
+        *v1 ^= *v2;
+    }
+}
+
+void swap(int* v1, int* v2) {
+    if (v1 != v2) {
+        int tmp = *v1;
+        *v1 = *v2;
+        *v2 = tmp;
+    }
+}
+
+void displayArray(int* array, int count) {
+    for (int i = 0; i < count; i++) {
+        printf("Value in array at index[%d]= %d\n", i, array[i]);
+    }
+}
+
+bool sortFirst(int* array, int length) {
+    bool rt = false;
+    // This loop could probably be replaced by a while loop with conditions
+    // on the array values permutation AND the iteration value, later ...
+    for (int i = 0; i < length-1; i++) {
+        if (array[i] > array[i+1]) {
+            swap(&array[i], &array[i+1]);
+            //xorSwap(&array[i], &array[i+1]);
+            if (!rt) { rt = true; };
+        }
+    }
+    return rt;
+}
+
+void sortArray(int* array, int length) {
+    bool rt; 
+    do {
+        rt = sortFirst(array, length);
+    } while (rt);
+
+}
+
+int main() {
+    int tab_length = 10;
+    int tab[tab_length];
+    for (int i = 0; i < tab_length; i++) {
+        tab[i] = 0;
+    }
+   
+    for (int i = 0; i < tab_length; i++) {
+        printf("Enter integer value at array's index[%d]? ", i);
+        /* En langage C, une ligne doit être terminée par le caractère '\n'. Tant que       */
+        /* la ligne n'est pas terminée et que le tampon associé au fichier n'est pas plein, */
+        /* les caractères transmis ne seront pas effectivement écrits mais tout simplement  */
+        /* placés dans le tampon. On peut cependant forcer le vidage de ce tampon à l'aide  */
+        /* de la fonction fflush.                                                           */
+        fflush(stdout);
+        promptValue(&tab[i]);
+    }
+
+    printf("\nView array content unsorted:\n");
+    displayArray(tab, tab_length);
+    sortArray(tab, tab_length);
+    printf("\nNow, sorting the array...\n");
+    printf("\nView array content sorted:\n");
+    displayArray(tab, tab_length);
+
+    return 0;
+}