С произвольного одномерного массива действительных чисел сформировать массив, содержащий упорядоченные по возрастанию - C (СИ)
Формулировка задачи:
С произвольного одномерного массива действительных чисел сформировать массив, содержащий упорядоченные по возрастанию целые части элементов исходного массива
Решение задачи: «С произвольного одномерного массива действительных чисел сформировать массив, содержащий упорядоченные по возрастанию»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int cmp(const void *a, const void *b) { return *(int*)a - *(int*)b; } main() { float *f_arr; int *i_arr; int i, dim, min, temp; printf("Input array dimention: "); scanf("%d", &dim); f_arr = (float *)malloc(sizeof(float)*dim); i_arr = (int *)malloc(sizeof(int)*dim); //как-нибудь заполним массив f_arr, например рандомом, способов много for(i=0; i<dim; i++) i_arr[i]=f_arr[i]; //отсечем дробную часть //отсортируем qsort(i_arr, dim, sizeof(int), cmp ); // СОРТИРУЕМ for(i = 0 ; i < dim; i++) { // ВЫВОДИМ РЕЗУЛЬТАТ printf("%d ", i_arr[i]); } //взято из Вики :) free(f_arr); free(i_arr); system("pause"); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с консольюstdlib.h
для работы с функциями malloc, free и qsort
- Определяем функцию сравнения:
- функция
cmp
будет использоваться функцией qsort для сравнения элементов массива
- функция
- Определяем функцию main:
- объявляем переменные:
float *f_arr;
для хранения адреса массива действительных чиселint *i_arr;
для хранения адреса массива целых чиселint i;
для итерации по массивуdim;
для хранения размера массиваmin;
для хранения минимального элемента массиваtemp;
для временного хранения элемента
- объявляем переменные:
- Запрашиваем размер массива:
- выводим сообщение
Input array dimention:
- считываем размер массива с помощью функции scanf
- выводим сообщение
- Выделяем память под массивы:
- используем функцию malloc для выделения памяти под массив действительных чисел
f_arr
- используем функцию malloc для выделения памяти под массив целых чисел
i_arr
- используем функцию malloc для выделения памяти под массив действительных чисел
- Заполняем массив f_arr:
- для примера, заполняем массив
f_arr
случайными числами
- для примера, заполняем массив
- Переносим значения из массива f_arr в массив i_arr:
- используем цикл for для перебора элементов массива
f_arr
- присваиваем значение каждого элемента массива
i_arr
- используем цикл for для перебора элементов массива
- Сортируем массив i_arr:
- используем функцию qsort для сортировки массива
i_arr
- передаем размер массива, функцию сравнения и указатель на первый элемент массива
- используем функцию qsort для сортировки массива
- Выводим отсортированный массив i_arr:
- используем цикл for для перебора элементов массива
i_arr
- выводим каждый элемент массива с помощью функции printf
- используем цикл for для перебора элементов массива
- Свобождаем память:
- используем функцию free для освобождения памяти, выделенной под массивы
f_arr
иi_arr
- используем функцию free для освобождения памяти, выделенной под массивы
- Завершаем программу:
- используем функцию system для вывода сообщения
Press any key to continue
- программа завершается после нажатия любой клавиши
- используем функцию system для вывода сообщения
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д