Удаление элементов массива - C (СИ) (70894)

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

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

Допустим нам дан массив А[5] . Как в данном массиве удалить , ну например 1 и 3 элементы , что бы на выходе вместо 1 2 3 4 5 компилятор выдал 1 3 5 ?

Решение задачи: «Удаление элементов массива»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int* array_remove_even(int* _f, int* _l){
  4.     int* p;
  5.     while((_f != _l) && !(*_f % 2))
  6.         ++_f;
  7.  
  8.     for(p = _f; _f != _l; ++_f){
  9.         if(*_f % 2)
  10.             *p++ = *_f;
  11.     }
  12.     return p;
  13. }
  14.  
  15. int main(void){
  16.     int* p, *e;
  17.     int a[] = { 1, 2, 3, 4, 5 };
  18.     int   n = sizeof(a)/sizeof(a[0]);
  19.  
  20.     e = array_remove_even(a, a + n);
  21.     for(p = &a[0]; p != e; ++p)
  22.         printf("%d ", *p);
  23.     return 0;
  24. }

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

В данном коде реализована функция array_remove_even, которая удаляет из массива все четные элементы.

  1. Создается указатель p, который будет указывать на первый элемент в отфильтрованной части массива.
  2. В цикле while с условием (_f != _l) && !(*_f % 2)) перебираются элементы массива с начала до конца. Как только встречается четное число, условие меняется и цикл прерывается.
  3. Далее в цикле for с переменной p, начиная с _f, перебираются все элементы массива. Если число нечетное, оно копируется в отфильтрованную часть массива по адресу p.
  4. В конце функции возвращается адрес последнего элемента отфильтрованной части массива. В функции main создается массив a, инициализированный пятью нечетными числами. Затем вызывается функция array_remove_even, передавая ей начальный и конечный указатели на массив a. Результат работы функции сохраняется в переменной e. Далее в цикле for с переменной p и условием p != e перебираются элементы массива от начала до конца. На каждой итерации выводится на экран значение элемента, на которое указывает указатель p. В конце программы возвращается 0, что означает успешное выполнение.

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


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

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

13   голосов , оценка 3.846 из 5

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

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

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