Удаление элемента из массива с использованием C

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Массив - это коллекция похожих элементов данных, хранящихся в последовательных ячейках памяти и состоящая из элементов. Элемент можно получить, обратившись к индексу соответствующей ячейки памяти. Иногда становится необходимым удалить любой элемент массива в зависимости от его позиции или значения. В этом практическом занятии мы узнаем, как удалить элемент из массива в зависимости от его позиции и значения.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/if_else -.-> lab-123230{{"Удаление элемента из массива с использованием C"}} c/for_loop -.-> lab-123230{{"Удаление элемента из массива с использованием C"}} c/arrays -.-> lab-123230{{"Удаление элемента из массива с использованием C"}} c/function_declaration -.-> lab-123230{{"Удаление элемента из массива с использованием C"}} c/create_files -.-> lab-123230{{"Удаление элемента из массива с использованием C"}} c/output -.-> lab-123230{{"Удаление элемента из массива с использованием C"}} end

Создайте проект на 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, затем ищется позиция или значение целевого элемента, а затем с помощью цикла удаляется элемент. Это достигается путем копирования элемента, находящегося справа от элемента для удаления, влево до конца массива. После удаления размер массива уменьшается на единицу.