Каждый i-ый элемент массива заменить минимальным среди первых i элементов - C (СИ)
Формулировка задачи:
Каждый из элементов ti массива T(m) заменить минимальным среди первых i элементов этого массива. Для m>=4 предусмотреть заполнение массива случайными числами из диапазона –10 до 10.
Решение задачи: «Каждый i-ый элемент массива заменить минимальным среди первых i элементов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int int_cmp(const void* a, const void* b) { return ((*(int*)a) < (*(int*)b)); } void* min_element(const void* first, const void* last, const size_t element_size, int (*compare)(const void*, const void*)) { void* min = (void*)first; while (first != last) { if (compare(first, min)) min = (void*)first; first = (unsigned char*)first + element_size; } return min; } void fill(void* first, const void* last, const size_t element_size, const void* const value) { while (first != last) { memcpy(first, value, element_size); first = (unsigned char*)first + element_size; } } int main(void) { int m; scanf("%d", &m); int a[m]; if (m >= 4) { srand(time(NULL)); for (int i = 0; i < m; i++) a[i] = rand() % 21 - 10; } else { for (int i = 0; i < m; i++) scanf("%d", &a[i]); } printf("Array:\n"); for (int i = 0; i < m; i++) printf("%3d ", a[i]); printf("\n"); int first_i; scanf("%d", &first_i); fill(&a[0], &a[m], sizeof(int), min_element(&a[0], &a[first_i], sizeof(int), int_cmp)); printf("Array:\n"); for (int i = 0; i < m; i++) printf("%3d ", a[i]); printf("\n"); return 0; }
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Ввод начального значения массива:
Изначально в основной функции
main
программа запрашивает у пользователя размер массиваm
. Затем, в зависимости от размера массива, программа либо генерирует случайные значения для элементов массива, либо просит пользователя ввести значения вручную. После этого выводится начальный массив. - Поиск минимального элемента:
Программа запрашивает у пользователя номер первого элемента, который будет использоваться для поиска минимального элемента. Функция
min_element
ищет минимальный элемент в заданном диапазоне массива, используя функцию сравненияint_cmp
. - Замена элементов массива:
С помощью функции
fill
найденное минимальное значение заменяется на все элементы массива, начиная с указанного пользователем первого элемента. - Вывод измененного массива: После замены элементов программа выводит измененный массив. Примечание: В данном коде не учитывается случай, когда первый элемент, который необходимо заменить, является минимальным элементом всего массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д