Удаление элементов из целочисленного массива - C (СИ)

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

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

Описать функцию RemoveX(A, N, X), удаляющую из целочисленного массива A размера N элементы, равные целому числу X. Массив A и число N являются входными и выходными параметрами. С помощью этой функции удалить числа XA, XB, XC из массивов A, B, C размера NA, NB, NC соответственно и вывести размер и содержимое полученных массивов.

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
void rem_elt(int *A, int *n, int x)
{
     int i_from, i_to;
     i_from=0;
     i_to=0;
     while (1)
     {
        if (i_from > *n) break;   
        if (A[i_from]==x) 
           i_from++;
        else
           A[i_to++]=A[i_from++];    
      }      
      *n=i_to-1;
      return;
}     
     
int main(int argc, char *argv[])
{
 
  int Z[]={1,2,3,1,2,3,1,2,3,2,2,2};
  int n=sizeof(Z)/sizeof(int);
  int i;
  
  printf("Initial array: ");
  for (i=0; i<n; i++) printf("%d ",Z[i]);
  printf("\n");
  
  rem_elt(Z,&n,2);
  
  printf("Array after removing: ");
  for (i=0; i<n; i++) printf("%d ",Z[i]);
  printf("\n");
  
  system("PAUSE");  
  return 0;
}

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

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

  1. В функции rem_elt объявлены три переменные:
    • i_from и i_to — индексы, которые используются для обхода массива,
    • x — элемент, который необходимо удалить из массива.
  2. В цикле while происходит обход массива от начала до конца. Если встретится элемент x, то его пропускают, увеличивая i_from на 1. Если элемент не равен x, то его копируют в новую позицию i_to, увеличивая i_to и i_from на 1.
  3. После выхода из цикла, количество элементов в массиве уменьшается на 1, так как один элемент был удален.
  4. В функции main создается массив Z и инициализируется значениями {1,2,3,1,2,3,1,2,3,2,2,2}.
  5. Размер массива вычисляется как разница между размером массива и размером одного элемента, делится на размер одного элемента и округляется до целого числа в меньшую сторону.
  6. В цикле printf выводится начальный массив.
  7. Вызывается функция rem_elt, передавая в нее указатель на массив Z и указатель на переменную n. Функция удаляет из массива все вхождения элемента 2.
  8. Выводится массив после удаления элемента 2.
  9. Вызывается функция system для приостановки выполнения программы до нажатия клавиши.
  10. Возвращается 0, что означает успешное выполнение программы.

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


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

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

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