47.4 연습문제: 4-gram 만들기

다음 소스 코드를 완성하여 입력된 문자열을 문자 단위로 4-gram을 출력하세요. 만약 3글자 이하의 단어가 입력되면 wrong을 출력하세요.

practice_4_gram_character.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main()
{
    char text[30];
    int length;
    int n = 4;

    scanf("%s", text);

    length = strlen(text);
    if (________________)
    {
        printf("wrong\n");
    }
    else
    {
        for (int i = 0; _____________; i++)
        {
            for (int j = 0; ___________; j++)
                printf("%c", text[i + j]);

            printf("\n");
        }
    }

    return 0;
}

실행 결과

overwhelming (입력)
over
verw
erwh
rwhe
whel
helm
elmi
lmin
ming

정답

 length < n
 i < length - (n - 1)
 j < n

해설

여기서는 N-gram의 N이 변수 n으로 선언되어 있고 4가 들어있으므로 n을 활용하여 조건식을 작성합니다.

3글자 이하가 입력되면 wrong을 출력하라고 했으므로 if 조건문에는 length < n을 넣어줍니다. 문자열을 반복할 때는 배열의 범위를 벗어나지 않도록 i < length - (n - 1)과 같이 작성합니다. 마지막으로 글자를 출력할 때도 n개만큼 출력할 수 있도록 j < n과 같이 작성하면 됩니다.