C언어 공부하기/C언어 예제

C언어 프로그래밍 예제 : 펠린드롬 글자 확인

HawordFREAKEK 2020. 3. 26. 20:30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<stdio.h>
#pragma warning(disable:4996)
void main()
{
    char f = 'y';
    while (f == 'y')
    {
        printf("위 프로그램은 펠린드럼 판별기입니다.\n\n\n");
        int leng = 0;
        char ss[100= "\0";
        char tt[100= "\0";
        printf("판별하실 문자열을 입력하여 주십시오 : ");
        scanf("%s", ss);
        int k=1;
 
 
        while (ss[leng] != '\0')
        {
            leng++;
        }
 
 
        for (int i = 0; i < leng; i++)
        {
            tt[i] = ss[leng - 1 - i];
        }
 
        tt[leng] = '\0';
 
        for (int j = 0; j < leng; j++)
        {
            if (ss[j] != tt[j])
            {
                k--;
            }
        }
 
 
        switch (k)
        {
        case 1:printf("펠린드럼 문자입니다.\n"); break;
        default:printf("펠린드럼 문자가 아닙니다.\n"); break;
        }
        getchar();
        printf("계속하시겠습니까?(y/n)");
        scanf("%c"&f);
        system("cls");
    }
}
cs


바로 읽으나 거꾸로 읽으나, 같은 뜻으로 되는 '순역동의 문장 (順逆同意 文章)'을, '회문(回文)'이라고 하며, 영어로는 'Palindrome'입니다


라고 펠린드롬의 정의가 구글에 검색하면 나옵니다. (계속 펠린드럼,팰린드럼, 펜린드럼 쳤는데 안떠서 pelindrum 치니까 펭귄드럼 뜨더라구요;;)

eve,level.수박이 박수 이런 단어가 펠림드롬의 예라고 볼 수 있습니다.



일단 첫번째로는 유저가 y 나 n 중에 y를 입력하면 계속 작동하고 n을 입력하면 루프가 끝나 종료되게 합니다.

다음으로는 사용할 변수들을 선언해줍니다. 그 후에 문자열 두 가지를 입력받습니다. 



그 후에 단어의 길이를 확인하기 위하여 while문을 통하여 문자열의 맨 끝 null 바이트 까지의 갯수를 구합니다.

일단 더 쉽게 코드 짜시고 싶으시면 #include<string.h>를 이용하여 strlen 함수를 사용하시면 더 쉽습니다.



그 다음에 문자열의 i 번째 단어를 다른 배열의 전체길이-1+i 번째 단어에 저장하여 두 문자열을 비교 함으로써 앞뒤로 똑같은 펠린드롬인지 확인하려합니다.


만약 두 문자열이 서로 다르다면 색인값을 1에서 0으로 바꿉니다.


최종적으로 색인값이 0이면 펠린드럼이 아니라는 값을 주고, 1이면 펠린드롬이라는 이라는 말을 해줍니다.


그 후에 유저에게 계속할지 안 할지 물어보고 만약 다시한다면 cmd 창을 clear합니다.