Удаление элементов массива - C (СИ) (70894)
Формулировка задачи:
Допустим нам дан массив А[5] . Как в данном массиве удалить , ну например 1 и 3 элементы , что бы на выходе вместо 1 2 3 4 5 компилятор выдал 1 3 5 ?
Решение задачи: «Удаление элементов массива»
textual
Листинг программы
#include <stdio.h> int* array_remove_even(int* _f, int* _l){ int* p; while((_f != _l) && !(*_f % 2)) ++_f; for(p = _f; _f != _l; ++_f){ if(*_f % 2) *p++ = *_f; } return p; } int main(void){ int* p, *e; int a[] = { 1, 2, 3, 4, 5 }; int n = sizeof(a)/sizeof(a[0]); e = array_remove_even(a, a + n); for(p = &a[0]; p != e; ++p) printf("%d ", *p); return 0; }
Объяснение кода листинга программы
В данном коде реализована функция array_remove_even, которая удаляет из массива все четные элементы.
- Создается указатель p, который будет указывать на первый элемент в отфильтрованной части массива.
- В цикле while с условием (_f != _l) && !(*_f % 2)) перебираются элементы массива с начала до конца. Как только встречается четное число, условие меняется и цикл прерывается.
- Далее в цикле for с переменной p, начиная с _f, перебираются все элементы массива. Если число нечетное, оно копируется в отфильтрованную часть массива по адресу p.
- В конце функции возвращается адрес последнего элемента отфильтрованной части массива. В функции main создается массив a, инициализированный пятью нечетными числами. Затем вызывается функция array_remove_even, передавая ей начальный и конечный указатели на массив a. Результат работы функции сохраняется в переменной e. Далее в цикле for с переменной p и условием p != e перебираются элементы массива от начала до конца. На каждой итерации выводится на экран значение элемента, на которое указывает указатель p. В конце программы возвращается 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д