Сортировка массива вещественных чисел - C (СИ)
Формулировка задачи:
помогите пожалуйста, надо:
Создать программу, сортирующую массив вещественных чисел по возрастанию. Число элементов массива вводится пользователем перед вводом значений элементов массива (использовать функции динамического выделения памяти). Для работы с элементами массива использовать указатели (адресную арифметику).
моя попытка:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { double *a, *pa; int n; printf("n? "); scanf("%d", &n); a = (double *)malloc(n * sizeof(a[0])); srand(time(NULL)); printf("array:"); scanf("%lf", *pa); for (pa = a; pa < a + n; ++pa) printf(" %.1f", *pa = rand() % 100); for (pa = a; pa < a + n - 1; ++pa) { double *pm = pa, *pc = pa + 1; for (; pc < a + n; ++pc) if (*pc < *pm) pm = pc; if (pa != pm) { int tmp = *pa; *pa = *pm; *pm = tmp; } } printf("\nsorted array: "); for (pa = a; pa < a + n; ++pa) printf(" %.1f", *pa); free(a); return 0; }
Решение задачи: «Сортировка массива вещественных чисел»
textual
Листинг программы
if ( ! ( a = malloc(n * sizeof(double)) ) ) { /* сообщить об ошибке, завершить программу */ }
Объяснение кода листинга программы
- Сначала выполняется проверка на успешное выделение памяти под массив
a
с помощью функцииmalloc
. Если выделение памяти не удалось, то программа завершается и выводится сообщение об ошибке. - Затем, после успешного выделения памяти, в массиве
a
инициализируются все элементы нулевым значением типаdouble
. - Далее, в цикле
for
выполняется сортировка массиваa
методомсортировка пузырьком
. - Внутри цикла, для каждого элемента массива
a
выполняется сравнение со следующим элементом и, в зависимости от результата сравнения, происходит обмен значениями элементов. - После завершения цикла, в массиве
a
остается отсортированный массив вещественных чисел. - В конце программы, выводится отсортированный массив
a
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д