Не виден результат сортировки массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! У меня вопрос - почему я не вижу результат сортировки массива? Программа по окончанию ввода всех элементов сразу же выходит! Вот код:
#include <stdio.h>
#include <stdlib.h>
        
#define SWAP(a, b) ({ int t = *a; *a = *b; *b = t; })
 
int main(void){
        int * arr, * i, * j, size;
        
        printf("Size: ");
        scanf("%d", &size);
        if ( ( arr = (int*)malloc(sizeof(int) * size) ) == NULL ){
                perror("malloc");
                exit(1);
        }
        
        for ( i = arr; i < arr + size; ++i ){
                printf("Array[%d] = ", i - arr);
                scanf("%d", i);
        }
        
        for ( i = arr + size - 1; i > arr; --i )
                for ( j = arr; j < i; ++j )
                        if ( *j > *i )
                                SWAP(i, j);
        
        for ( i = arr; i < arr + size; ++i )
                printf("%d ", *i);
        printf("\n");
        
        free(arr);
        exit(0);
}

Решение задачи: «Не виден результат сортировки массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
        
#define SWAP(a, b) ({ int t = *a; *a = *b; *b = t; })
 
int main(void){
        int * arr, * i, * j, size;
        
        printf("Size: ");
        scanf("%d", &size);
        if ( ( arr = (int*)malloc(sizeof(int) * size) ) == NULL ){
                perror("malloc");
                exit(1);
        }
        
        for ( i = arr; i < arr + size; ++i ){
                printf("Array[%d] = ", i - arr);
                scanf("%d", i);
        }
        
        for ( i = arr + size - 1; i > arr; --i )
                for ( j = arr; j < i; ++j )
                        if ( *j > *i )
                                SWAP(i, j);
        
        for ( i = arr; i < arr + size; ++i )
                printf("%d ", *i);
        printf("\n");
        
        free(arr);
        system("pause");
        return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdio.h и stdlib.h
  2. Определяется функция SWAP, которая меняет значения двух переменных
  3. В функции main() подключается стандартный ввод-вывод и выделяется память под массив заданного размера
  4. Заполняется массив с помощью стандартного ввода
  5. Производится сортировка массива методом пузырька
  6. Выводится отсортированный массив
  7. Освобождается память, выделенная под массив
  8. Запускается пауза для того, чтобы пользователь мог увидеть результат
  9. Возвращается 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы