Введение
Массив - это коллекция похожих элементов данных, хранящихся в последовательных ячейках памяти и состоящая из элементов. Элемент можно получить, обратившись к индексу соответствующей ячейки памяти. Иногда становится необходимым удалить любой элемент массива в зависимости от его позиции или значения. В этом практическом занятии мы узнаем, как удалить элемент из массива в зависимости от его позиции и значения.
Создайте проект на C
Во - первых, нам нужно создать проект на C в редакторе кода. Создайте новый файл "main.c" в директории ~/project/ и напишите следующий код:
#include <stdio.h>
int main()
{
return 0;
}
Удалить элемент из массива по позиции
В этом шаге мы напишем программу на языке C, которая принимает массив целых чисел, размер массива и позицию элемента для удаления. Затем мы удалим элемент и выведем обновленный массив.
#include <stdio.h>
int main()
{
int arr[100], position, c, n;
printf("Enter the number of elements in array: ");
scanf("%d", &n);
printf("Enter %d elements:\n", n);
for(c = 0; c < n; c++)
scanf("%d", &arr[c]);
printf("Enter the location of the element to delete: ");
scanf("%d", &position);
if (position >= n + 1)
printf("Deletion not possible.\n");
else
for (c = position - 1; c < n - 1; c++)
arr[c] = arr[c+1];
printf("The updated array is: ");
for(c = 0; c < n-1; c++)
printf("%d ", arr[c]);
return 0;
}
Пояснение к коду:
- Мы создаем целочисленный массив
arr[100], который может хранить максимум 100 элементов. - Мы получаем целое число
nот пользователя, которое представляет количество элементов в массиве. - Цикл for используется для приема ввода от пользователя с использованием функции scanf в массив
arr. - Мы получаем позицию элемента для удаления в качестве ввода от пользователя.
- Мы проверяем, является ли введенная пользователем позиция допустимой; она должна быть между 1 и n.
- Если позиция допустима, мы помещаем элемент слева от позиции на место удаленного элемента, что достигается путем реализации цикла для перемещения элемента на одну позицию влево.
- Наконец, мы выводим обновленный массив с использованием инструкции printf.
Удалить элемент из массива по значению
В этом шаге мы напишем программу на C для удаления элемента массива в зависимости от значения, введенного пользователем.
#include<stdio.h>
int main()
{
int arr[10], element, c, n, pos, found=0;
printf("Enter the number of elements in array: ");
scanf("%d", &n);
printf("Enter %d elements:\n", n);
for (c = 0; c < n; c++)
scanf("%d", &arr[c]);
printf("Enter the element to delete: ");
scanf("%d", &element);
for (c = 0; c < n; c++)
{
if (arr[c] == element)
{
found = 1;
pos = c;
break;
}
}
if (found == 1)
{
for (c = pos; c < n - 1; c++)
arr[c] = arr[c+1];
printf("The updated array is: ");
for (c = 0; c < n - 1; c++)
printf("%d ", arr[c]);
}
else
printf("Element not found in array.");
return 0;
}
Пояснение к коду:
- Мы создаем целочисленный массив arr[10].
- Мы храним количество элементов, которое нужно добавить из переменной ввода пользователя
n. - Мы используем цикл for для последовательного ввода n целых чисел с помощью функции scanf в целочисленный массив arr.
- Мы получаем ввод элемента, который мы хотим удалить, от пользователя.
- Мы обходим массив с помощью цикла for от 0 до n-1, а затем с использованием инструкции if проверяем, равно ли введенный пользователем элемент любому из элементов массива или нет.
- Если оно равно, то мы объявляем переменную
pos, в которой храним индекс этого элемента. - Мы используем другой цикл for для удаления элемента и сдвига остальных элементов массива.
- Наконец, мы выводим обновленный массив с использованием инструкции printf.
Резюме
В этом практическом занятии мы научились удалять элемент из массива по его позиции или значению в программировании на C. Программа для удаления элемента из массива принимает массив, его размер и позицию/значение элемента для удаления в качестве входных данных. Для обхода массива используется цикл for, затем ищется позиция или значение целевого элемента, а затем с помощью цикла удаляется элемент. Это достигается путем копирования элемента, находящегося справа от элемента для удаления, влево до конца массива. После удаления размер массива уменьшается на единицу.



