Advertisement
linus666

sort.c

Apr 17th, 2025
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.70 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int read_array(int *array, int *size);
  5. void print_array(int *array, int size);
  6. void bubble_sort(int *array, int size);
  7.  
  8. int main() {
  9.     int size, read_success;
  10.     int *array;
  11.  
  12.     if (scanf("%d", &size) == 1 && size > 0) {
  13.         array = (int *)calloc(size, sizeof(int));
  14.         if (array != NULL) {
  15.             read_success = read_array(array, &size);
  16.             if (read_success) {
  17.                 bubble_sort(array, size);
  18.                 print_array(array, size);
  19.             } else {
  20.                 printf("n/a");
  21.             }
  22.             free(array);
  23.             array = NULL;
  24.         }
  25.     } else {
  26.         printf("n/a");
  27.     }
  28.     return 0;
  29. }
  30.  
  31. int read_array(int *array, int *size) {
  32.     int success = 0;
  33.     for (int *ptr = array; ptr - array < *size; ptr++) {
  34.         char separator;
  35.         if (scanf("%d", ptr) != 1) break;
  36.         separator = getchar();
  37.         if (separator != ' ') {
  38.             if (separator == '\n' && ptr - array + 1 == *size) {
  39.                 success = 1;
  40.                 break;
  41.             }
  42.         }
  43.     }
  44.     return success;
  45. }
  46.  
  47. void print_array(int *array, int size) {
  48.     for (int *ptr = array; ptr - array < size; ptr++) {
  49.         printf("%d", *ptr);
  50.         if (ptr - array + 1 != size) printf(" ");
  51.     }
  52. }
  53.  
  54. void bubble_sort(int *array, int size) {
  55.     int temp;
  56.     for (int *outer = array; outer - array < size - 1; outer++) {
  57.         for (int *inner = array; inner - array < size - 1; inner++) {
  58.             if (*inner > *(inner + 1)) {
  59.                 temp = *(inner + 1);
  60.                 *(inner + 1) = *inner;
  61.                 *inner = temp;
  62.             }
  63.         }
  64.     }
  65. }
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement