Написать функцию, удаляющего числа из массива со сдвигом значений - C (СИ)

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

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

дано такое задание Написать функцию, удаляющего числа из массива со сдвигом значений. (образованные пустые места заполняются нулями) (было 1 2 3 4 5 стало 1 2 4 5 0) и вот эту функцию нужно написать обязательно через рекурсию... я вообще понятия не имею как это делать... пожалуйста напишите или намекните как-нибудь что тут делать. без рекурсии в принципе могу написать. а вот с ней не знаю как

Решение задачи: «Написать функцию, удаляющего числа из массива со сдвигом значений»

textual
Листинг программы
#include <string.h>
 
/* Удаляет из массива array размером count элементов значение value сдвигая идущие за ним элементы
и вставляя в конец массива соответствующее количество нулей.
Значение value не может быть нулём. */
void recremove(int * array, const size_t count, const int value) {
    if ( count ) { /* если в массиве есть элементы */
        if ( *array == value ) { /* если значение первого элемента совпадает с заданным */
            memmove(array, array + 1, sizeof(int) * ( count - 1 )); /* сдвинуть идущие за ним на одну позицию влево */
            array[count - 1] = 0; /* обнулить последний элемент в массиве */
            recremove(array, count, value); /* вызвать функцию с теми же параметрами - нужные значения могут подряд идти */
        }
        else
            recremove(array + 1, count - 1, value); /* вызвать функцию для следующего элемента (array + 1), 
                                                                       соответственно элементов будет на один меньше ( count - 1 ) */
    }
}

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


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

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

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