С произвольного одномерного массива действительных чисел сформировать массив, содержащий упорядоченные по возрастанию - 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");
}

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

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с консолью
    • stdlib.h для работы с функциями malloc, free и qsort
  2. Определяем функцию сравнения:
    • функция cmp будет использоваться функцией qsort для сравнения элементов массива
  3. Определяем функцию main:
    • объявляем переменные:
      • float *f_arr; для хранения адреса массива действительных чисел
      • int *i_arr; для хранения адреса массива целых чисел
      • int i; для итерации по массиву
      • dim; для хранения размера массива
      • min; для хранения минимального элемента массива
      • temp; для временного хранения элемента
  4. Запрашиваем размер массива:
    • выводим сообщение Input array dimention:
    • считываем размер массива с помощью функции scanf
  5. Выделяем память под массивы:
    • используем функцию malloc для выделения памяти под массив действительных чисел f_arr
    • используем функцию malloc для выделения памяти под массив целых чисел i_arr
  6. Заполняем массив f_arr:
    • для примера, заполняем массив f_arr случайными числами
  7. Переносим значения из массива f_arr в массив i_arr:
    • используем цикл for для перебора элементов массива f_arr
    • присваиваем значение каждого элемента массива i_arr
  8. Сортируем массив i_arr:
    • используем функцию qsort для сортировки массива i_arr
    • передаем размер массива, функцию сравнения и указатель на первый элемент массива
  9. Выводим отсортированный массив i_arr:
    • используем цикл for для перебора элементов массива i_arr
    • выводим каждый элемент массива с помощью функции printf
  10. Свобождаем память:
    • используем функцию free для освобождения памяти, выделенной под массивы f_arr и i_arr
  11. Завершаем программу:
    • используем функцию system для вывода сообщения Press any key to continue
    • программа завершается после нажатия любой клавиши

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


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

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

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