C 언어를 사용한 배열 요소 삭제 방법

CBeginner
지금 연습하기

소개

배열은 연속된 메모리 위치에 저장된 유사한 데이터 항목들의 모음이며, 요소들로 구성됩니다. 요소는 해당 메모리 위치의 인덱싱을 통해 접근할 수 있습니다. 때로는 위치나 값을 기준으로 배열의 요소를 삭제하는 것이 필수적입니다. 이 Lab 에서는 위치와 값을 기준으로 배열에서 요소를 제거하는 방법을 배우겠습니다.

C 프로젝트 생성

먼저, 코드 편집기에서 C 프로젝트를 생성해야 합니다. ~/project/ 디렉토리 아래에 "main.c"라는 새 파일을 생성하고, 다음 코드를 작성합니다.

#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;
}

코드 설명:

  • 최대 100 개의 요소를 저장할 수 있는 정수 배열 arr[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에서 추가할 요소의 수를 저장합니다.
  • scanf 함수를 사용하여 n 개의 정수를 하나씩 정수 배열 arr 에 입력받기 위해 for 루프를 사용합니다.
  • 사용자가 삭제하려는 요소의 입력을 받습니다.
  • 0 부터 n-1 까지 for 루프를 사용하여 배열을 순회한 다음, if 문을 사용하여 사용자가 입력한 요소가 배열의 요소와 같은지 확인합니다.
  • 같으면, 해당 요소의 인덱스를 저장하는 변수 pos를 선언합니다.
  • 다른 for 루프를 사용하여 요소를 삭제하고 나머지 배열 요소를 이동시킵니다.
  • 마지막으로, printf 문을 사용하여 업데이트된 배열을 출력합니다.

요약

이 랩에서는 C 프로그래밍에서 위치 또는 값을 기준으로 배열에서 요소를 삭제하는 방법을 배웠습니다. 배열에서 요소를 삭제하는 프로그램은 배열, 크기, 삭제할 요소의 위치/값을 입력으로 받습니다. for 루프를 사용하여 배열을 순회하고, 대상 요소의 위치 또는 값을 찾은 다음, 루프를 사용하여 요소를 삭제합니다. 이는 삭제할 요소의 오른쪽에 있는 요소를 배열의 끝까지 왼쪽으로 복사하여 수행됩니다. 삭제 후, 배열 크기는 1 감소합니다.