Каждый i-ый элемент массива заменить минимальным среди первых i элементов - C (СИ)

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

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

Каждый из элементов ti массива T(m) заменить минимальным среди первых i элементов этого массива. Для m>=4 предусмотреть заполнение массива случайными числами из диапазона –10 до 10.

Решение задачи: «Каждый i-ый элемент массива заменить минимальным среди первых i элементов»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. int int_cmp(const void* a, const void* b)
  7. {
  8.   return ((*(int*)a) < (*(int*)b));
  9. }
  10.  
  11. void* min_element(const void* first, const void* last, const size_t element_size,
  12.   int (*compare)(const void*, const void*))
  13. {
  14.   void* min = (void*)first;
  15.  
  16.   while (first != last)
  17.   {
  18.     if (compare(first, min)) min = (void*)first;
  19.     first = (unsigned char*)first + element_size;
  20.   }
  21.  
  22.   return min;
  23. }
  24.  
  25. void fill(void* first, const void* last, const size_t element_size, const void* const value)
  26. {
  27.   while (first != last)
  28.   {
  29.     memcpy(first, value, element_size);
  30.     first = (unsigned char*)first + element_size;
  31.   }
  32. }
  33.  
  34. int main(void)
  35. {
  36.   int m;
  37.   scanf("%d", &m);
  38.  
  39.   int a[m];
  40.   if (m >= 4)
  41.   {
  42.     srand(time(NULL));
  43.     for (int i = 0; i < m; i++) a[i] = rand() % 21 - 10;
  44.   }
  45.   else
  46.   {
  47.     for (int i = 0; i < m; i++) scanf("%d", &a[i]);
  48.   }
  49.  
  50.   printf("Array:\n");
  51.   for (int i = 0; i < m; i++) printf("%3d ", a[i]);
  52.   printf("\n");
  53.  
  54.   int first_i;
  55.   scanf("%d", &first_i);
  56.  
  57.   fill(&a[0], &a[m], sizeof(int), min_element(&a[0], &a[first_i], sizeof(int), int_cmp));
  58.  
  59.   printf("Array:\n");
  60.   for (int i = 0; i < m; i++) printf("%3d ", a[i]);
  61.   printf("\n");
  62.  
  63.   return 0;
  64. }

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

В этом коде выполняется следующая последовательность действий:

  1. Ввод начального значения массива: Изначально в основной функции main программа запрашивает у пользователя размер массива m. Затем, в зависимости от размера массива, программа либо генерирует случайные значения для элементов массива, либо просит пользователя ввести значения вручную. После этого выводится начальный массив.
  2. Поиск минимального элемента: Программа запрашивает у пользователя номер первого элемента, который будет использоваться для поиска минимального элемента. Функция min_element ищет минимальный элемент в заданном диапазоне массива, используя функцию сравнения int_cmp.
  3. Замена элементов массива: С помощью функции fill найденное минимальное значение заменяется на все элементы массива, начиная с указанного пользователем первого элемента.
  4. Вывод измененного массива: После замены элементов программа выводит измененный массив. Примечание: В данном коде не учитывается случай, когда первый элемент, который необходимо заменить, является минимальным элементом всего массива.

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


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

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

10   голосов , оценка 3.4 из 5

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

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

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