본문 바로가기

옛날

[9d] ID규칙 , 모음빈도

입력된 문장에서 영어 모음이 몇 번 나오는지를 판단하여 출력하는 프로그램을 작성해 보라. 단, 프로그램은 한 번만 실행된다.

> Enter a sentence.

> What a beautiful day.(Enter)

> Vowels appear 8 times.



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
#include <stdio.h>
 
int vowel(char ch) {
    if (ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i' || ch == 'I' || ch == 'o' || ch == 'O' || ch == 'u' || ch == 'U') {
        return 1;
    }
    else {
        return 0;
    }
}
 
int main() {
    int count = 0;
    char ch;
 
    printf("Enter a sentence.\n");
    scanf("%c"&ch);
 
    while (ch != '\n') {
        if (vowel(ch)) {
            count++;
        }
        scanf("%c"&ch);
    }
 
    printf("Vowels appear %d times.\n", count);
 
    return 0;
}
cs

어쩌다보니 배열을 사용하지 않는 조건으로 프로그래밍을 하였는데..
다음부턴 쓰지 않을 방식이지만.. 그냥 이런 방법이 잇다는걸 알게 되었다.




새로운 아이디를 만들 때 규칙은 다음과 같다. 첫째, 반드시 네 개의 문자로 구성해야 한다. 둘째, 알파벳 소문자로 시작해야 한다. 셋째, 중간에 반드시 숫자가 하나 이상 들어가야 한다. 상태 변화를 추적함으로써, 입력한 아이디가 이상의 규칙에 들어맞는지를 판단하는 프로그램을 작성하라. 단, 프로그램은 "quit"가 입력될 때 까지 계속해서 실행되어야 한다.
> Enter an id.
> 2abc(Enter)
> It's illegar.
> Enter an id.
> a14c(Enter)
> It's llegar.
> Enter an id.
> quit(Enter)



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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
 
int isSmallLetter(char c) {
    if (c >= 97 && c <= 122) {
        return 1;
    }
    else {
        return 0;
    }
}
 
int isNumber(char c) {
    if (48 <= c && c <= 57) {
        return 1;
    }
    else {
        return 0;
    }
}
 
int main() {
 
    char ch;
    char firstChar;
 
    int charCount;
    int numberCount;
    
    int isLlegar;
 
    while (1) {
        isLlegar = 1;
        charCount = 0;
        numberCount = 0;
        printf("Enter an id.\n");
        scanf("%c"&ch);
 
        while (ch != '\n') {
            charCount++;
 
            if (charCount == 1) {
                firstChar = ch;
            }
            if (isNumber(ch)) {
                numberCount++;
            }
 
            scanf("%c"&ch);
        }
 
        if (charCount == 3) {
            //글자 수 조건 충족
            if (isSmallLetter(firstChar)) {
                //첫 글자 영어소문자 조건 충족
                if (numberCount <= 0) {
                    //숫자 존재 조건 불충족
                    isLlegar = 0;
                }
            }
            else {
                //첫 글자 영어소문자 조건 불충족
                isLlegar = 0;
            }
        }
        else if(charCount == 1 && numberCount == 1 && firstChar == '1') {
            //1을 적엇는지 체크
            return 0;
        }
        else {
            //글자 수 조건 불충족
            isLlegar = 0;
        }
        
        if (isLlegar) {
            printf("It's legar.\n");
        }
        else {
            printf("It's illegar.\n");
        }
    }
 
    return 0;
}

cs


생각을 많이 하게 만든 문제였다. 이것도 역시나 배열없이 코딩했다

'옛날' 카테고리의 다른 글

미분의 활용법 - 극대소, 오목성, 변곡점  (0) 2018.05.27
[10d] 삼륙구 게임  (0) 2018.04.28
[8d] 2839 : 설탕 배달  (0) 2018.04.14
ㅁㄴㅇ  (0) 2018.04.14
[7d] 카이사르 암호 (caesar cipher)  (0) 2018.04.12