Упорядочить в порядке возрастания первые N элементов массива - C (СИ)
Формулировка задачи:
Задано массив чисел Q(y). Определить количество N отрицательных элементов массива и упорядочить в порядке возрастания первые N элементов массива. Если невозможно сделать это, выдать сообщение
Решение задачи: «Упорядочить в порядке возрастания первые N элементов массива»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int arr[] = {5,4,3,2,1,-6, -5,-4, 12 ,8};
- void show(const int* arr, int arr_lenght){
- printf("array = ");
- for ( int i = 0; i < arr_lenght ; i++){
- printf("%d ",arr[i]);
- }
- printf("\n");
- }
- int count_negative(const int* arr, int arr_lenght){
- int number_of_negative = 0;
- for ( int i = 0; i < arr_lenght ; i++){
- if (arr[i] < 0) {
- number_of_negative += 1;
- }
- //number_of_negative += (arr[i] < 0) ? 1 : 0 ; // it's better way;
- }
- printf("Count of negative = %d.\n", number_of_negative);
- return number_of_negative;
- }
- int compare (const void * a, const void * b){
- //need for qsort.
- return ( *(int*)a - *(int*)b );
- }
- void partial_sort_for_int_array(int* arr, int num){
- // from stdlib.h
- qsort(arr, num, sizeof(int), compare);
- }
- int main(void)
- {
- int len = sizeof(arr)/sizeof(int);
- show(arr, len);
- int number_of_negative = count_negative(arr, len);
- partial_sort_for_int_array(arr, number_of_negative);
- show(arr,len);
- return 0;
- }
Объяснение кода листинга программы
- В начале кода объявляется массив arr[] с шестью положительными и двумя отрицательными числами.
- Затем определены функции: — 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).
- В функции main() сначала вычисляется длина массива len, затем выводится содержимое массива с помощью функции show().
- После этого вызывается функция count_negative(), которая подсчитывает количество отрицательных чисел в массиве, и сохраняет это значение в переменной number_of_negative.
- Затем вызывается функция partial_sort_for_int_array(), которая сортирует первые number_of_negative элементов массива по возрастанию.
- Наконец, выводится отсортированный массив с помощью функции show().
- Программа завершается возвратом значения 0 из функции main(), что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д