Написать функцию, удаляющего числа из массива со сдвигом значений - 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 ) */ } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д