Сортировка массива вещественных чисел - 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на экран.