Упорядочить в порядке возрастания первые N элементов массива - C (СИ)

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

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

Задано массив чисел Q(y). Определить количество N отрицательных элементов массива и упорядочить в порядке возрастания первые N элементов массива. Если невозможно сделать это, выдать сообщение

Решение задачи: «Упорядочить в порядке возрастания первые N элементов массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int arr[] = {5,4,3,2,1,-6, -5,-4, 12 ,8};
  6.  
  7.  
  8. void show(const int* arr, int arr_lenght){
  9.     printf("array = ");
  10.     for ( int i = 0; i < arr_lenght ; i++){
  11.         printf("%d ",arr[i]);
  12.     }
  13.     printf("\n");
  14. }
  15.  
  16.  
  17. int count_negative(const int* arr, int arr_lenght){
  18.     int number_of_negative = 0;
  19.     for ( int i = 0; i < arr_lenght ; i++){
  20.         if (arr[i] < 0) {
  21.             number_of_negative += 1;
  22.         }
  23.         //number_of_negative += (arr[i] < 0) ? 1 : 0 ; // it's better way;
  24.     }
  25.     printf("Count of negative = %d.\n", number_of_negative);
  26.     return number_of_negative;
  27. }
  28.  
  29.  
  30.  
  31. int compare (const void * a, const void * b){
  32.     //need for qsort.
  33.     return ( *(int*)a - *(int*)b );
  34. }
  35.  
  36. void partial_sort_for_int_array(int* arr, int num){
  37.     // from stdlib.h
  38.     qsort(arr, num, sizeof(int), compare);
  39. }
  40.  
  41.  
  42.  
  43. int main(void)
  44. {
  45.     int len = sizeof(arr)/sizeof(int);
  46.     show(arr, len);
  47.     int number_of_negative = count_negative(arr, len);
  48.     partial_sort_for_int_array(arr, number_of_negative);
  49.     show(arr,len);
  50.     return 0;
  51. }

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

  1. В начале кода объявляется массив arr[] с шестью положительными и двумя отрицательными числами.
  2. Затем определены функции: — show(const int arr, int arr_lenght) — для вывода элементов массива в консоль. — count_negative(const int arr, int arr_lenght) — для подсчета отрицательных чисел в массиве. — compare(const void a, const void b) — для сортировки массива по возрастанию (для использования в функции qsort из библиотеки stdlib.h). — partial_sort_for_int_array(int* arr, int num) — для частичной сортировки массива по возрастанию (также использует функцию qsort).
  3. В функции main() сначала вычисляется длина массива len, затем выводится содержимое массива с помощью функции show().
  4. После этого вызывается функция count_negative(), которая подсчитывает количество отрицательных чисел в массиве, и сохраняет это значение в переменной number_of_negative.
  5. Затем вызывается функция partial_sort_for_int_array(), которая сортирует первые number_of_negative элементов массива по возрастанию.
  6. Наконец, выводится отсортированный массив с помощью функции show().
  7. Программа завершается возвратом значения 0 из функции main(), что означает успешное выполнение программы.

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


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

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

12   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы