X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TP_7_C%2Fexo1-full.c;fp=TP_7_C%2Fexo1-full.c;h=451816b31cf8ebbefa26fb6f20c14f1eda322efb;hb=c2bc2b96a16dbea260d81c674abd5ac53687c273;hp=0000000000000000000000000000000000000000;hpb=e1b5a0c2efdaae55cb7ccb02126766c41b33afa4;p=TD_C.git diff --git a/TP_7_C/exo1-full.c b/TP_7_C/exo1-full.c new file mode 100644 index 0000000..451816b --- /dev/null +++ b/TP_7_C/exo1-full.c @@ -0,0 +1,55 @@ +#include +#include + +void swap(int* v1, int* v2) { + int tempValue = *v1; + *v1 = *v2; + *v2 = tempValue; +} + +/** Display the array on standard output. */ +void displayArray(int* array, int count) { + for (int tabIndex = 0; tabIndex < count; ++tabIndex) { + printf("array[%d] = %d\n", tabIndex, array[tabIndex]); + } +} + +/** Swap every out-of-order cells at most once. + * + * @return true if a swap was performed, false if the whole array is ordered. + */ +bool sortFirst(int* array, int length) { + bool swappedValues = false; + + for (int tabIndex = 0; tabIndex < (length - 1); ++tabIndex) { + if (array[tabIndex] > array[tabIndex + 1]) { + swap(&array[tabIndex], &array[tabIndex + 1]); + swappedValues = true; + } + } + + return swappedValues; +} + +void sortArray(int* array, int length) { + bool swappedValues; + + do { + swappedValues = sortFirst(array, length); + } while (swappedValues); +} + +/** Fill the array with user input. */ +void promptArray(int* array, int length) { + for (int tabIndex = 0; tabIndex < length; ++tabIndex) { + printf("Enter value for index %d:\n", tabIndex); + scanf("%d", &array[tabIndex]); + } +} + +int main() { + int arr[10]; + promptArray(arr, 10); + sortArray(arr, 10); + displayArray(arr, 10); +}