X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TP_7%2Fexo1%2Fexo1.c;fp=TP_7%2Fexo1%2Fexo1.c;h=b57e2ac794b94aa56b6209d46d1a23b852f724cf;hb=b10f2dc98106b52e190abb4041be21880b2a391c;hp=0000000000000000000000000000000000000000;hpb=5c1bf74dec4517e08461e2c44ad74d8e37dd471b;p=TD_C.git diff --git a/TP_7/exo1/exo1.c b/TP_7/exo1/exo1.c new file mode 100644 index 0000000..b57e2ac --- /dev/null +++ b/TP_7/exo1/exo1.c @@ -0,0 +1,81 @@ +#include +#include + +//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; +}