Удаление минимального элемента - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
для булевого типа, для функций работы со стеком и для работы с консолью. - Задаём функцию find_min, которая ищет минимальный элемент в массиве.
- Создаём цикл, который проходит по всем элементам массива, начиная со второго.
- Передаём указатель на следующий элемент массива, увеличивая его на единицу.
- Сравниваем текущий элемент с минимальным значением. Если текущий элемент меньше, то обновляем значение минимального элемента.
- Возвращаем найденное минимальное значение.
- Создаём функцию print_arr, которая выводит элементы массива на экран.
- Если параметр skip равен false, то выводим текущий элемент массива на экран.
- Если параметр skip равен true, то пропускаем вывод текущего элемента массива.
- Увеличиваем указатель на следующий элемент массива.
- Если параметр skipped не равен текущему элементу, то выводим его на экран.
- Увеличиваем указатель на следующий элемент массива.
- Возвращаем 0.
- Создаём функцию compare, которая сравнивает два элемента массива.
- Возвращаем -1, если первый элемент больше второго, иначе возвращаем 0.
- В функции main создаём массив arr и определяем его размер siz.
- Выводим элементы массива на экран с помощью функции print_arr, где параметр skip равен false.
- Находим минимальный элемент массива с помощью функции find_min и сохраняем его в переменной min.
- Выводим элементы массива на экран с помощью функции print_arr, где параметр skip равен true, а параметр skipped равен минимальному значению.
- Сортируем массив с помощью функции qsort, передавая в неё размер массива, функцию сравнения и начальный адрес массива.
- Выводим отсортированный массив на экран с помощью функции print_arr, где параметр skip равен true, а параметр skipped равен минимальному значению.
- Возвращаем 0, завершая работу программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д