Удаление минимального элемента - C (СИ)

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

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

Дана последовательность из n элементов. Удалить из нее все вхождения минимального элемента, затем отсортировать ее по убыванию. Вывести на экран исходную последовательность до удаления, после удаления и после сортировки.

Решение задачи: «Удаление минимального элемента»

textual
Листинг программы
#include <bool.h>
#include <stdlib.h>
#include <stdio.h>
 
int find_min(int* arr, size_t siz) {
    int min = *arr;
    while (--siz != 0) {
        arr++;
        if (*arr < min) { min = *arr; }
    }
    return min;
}
 
void print_arr(int* arr, size_t siz, bool skip, int skipped) {
    while (siz-- != 0) {
       if (!skip || *arr != skipped) { printf("%d ", *arr); }
       arr++;
    }
    putchar('\n');
}
 
int compare(const void* pa, const void* pb) {
    int a = *(int*)pa;
    int b = *(int*)pb;
    return a > b ? -1 : a != b;
}
 
int main(void) {
    int arr[] = { 1, 2, 1, 3, 4, 1 };
    size_t siz = sizeof(arr) / sizeof(arr[0]);
    print_arr(arr, siz, false, 0);
    int min = find_min(arr, siz);
    print_arr(arr, siz, true, min);
    qsort(arr, siz, sizeof(int), compare);
    print_arr(arr, siz, true, min);
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы: для булевого типа, для функций работы со стеком и для работы с консолью.
  2. Задаём функцию find_min, которая ищет минимальный элемент в массиве.
  3. Создаём цикл, который проходит по всем элементам массива, начиная со второго.
  4. Передаём указатель на следующий элемент массива, увеличивая его на единицу.
  5. Сравниваем текущий элемент с минимальным значением. Если текущий элемент меньше, то обновляем значение минимального элемента.
  6. Возвращаем найденное минимальное значение.
  7. Создаём функцию print_arr, которая выводит элементы массива на экран.
  8. Если параметр skip равен false, то выводим текущий элемент массива на экран.
  9. Если параметр skip равен true, то пропускаем вывод текущего элемента массива.
  10. Увеличиваем указатель на следующий элемент массива.
  11. Если параметр skipped не равен текущему элементу, то выводим его на экран.
  12. Увеличиваем указатель на следующий элемент массива.
  13. Возвращаем 0.
  14. Создаём функцию compare, которая сравнивает два элемента массива.
  15. Возвращаем -1, если первый элемент больше второго, иначе возвращаем 0.
  16. В функции main создаём массив arr и определяем его размер siz.
  17. Выводим элементы массива на экран с помощью функции print_arr, где параметр skip равен false.
  18. Находим минимальный элемент массива с помощью функции find_min и сохраняем его в переменной min.
  19. Выводим элементы массива на экран с помощью функции print_arr, где параметр skip равен true, а параметр skipped равен минимальному значению.
  20. Сортируем массив с помощью функции qsort, передавая в неё размер массива, функцию сравнения и начальный адрес массива.
  21. Выводим отсортированный массив на экран с помощью функции print_arr, где параметр skip равен true, а параметр skipped равен минимальному значению.
  22. Возвращаем 0, завершая работу программы.

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


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

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

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