본문 바로가기
C/기말고사 대비(2022 1학기)

[C언어 시험대비] 정규표현식

by Meaning_ 2022. 6. 6.
728x90
반응형

겁나 쉬운 평균구하기 🍭

 

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
#include<stdio.h>
#include<limits.h>
 
int main() {
    //국어,영어
 
    //1차원 배열로 푸는 방법 
    //가장 평균이 큰 애 출력
    //50,75 45,60 40,90
 
    int S1[2= { 50,75 };
    int S2[2= { 45,80 };
    int S3[2= { 40,90 };
 
    float Avg[3];
    Avg[0= (S1[0+ S1[1]) / 2;
    Avg[1= (S2[0+ S2[1]) / 2;
    Avg[2= (S3[0+ S3[1]) / 2;
 
    float max = 0;
    for (int i = 0; i < 3; i++) {
        if (max < Avg[i]) {
            max = Avg[i];
        }
    }
 
    printf("%.2f\n", max);
 
    //2차원 배열로 풀기
 
    int arr[3][2= {
        {50,75},
        {45,80},
        {40,90}
    };
 
    float Avg2[3= { 0, };
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            Avg2[i] += arr[i][j];
        }
        Avg2[i] /= 2;
 
    }
 
    float max2 = 0;
    for (int i = 0; i < 3; i++) {
 
        if (max2 < Avg2[i]) {
            max2 = Avg2[i];
        }
 
    }
 
    printf("%.2f\n", max2);
 
}
 
 
 
 
 
 
cs

 

 

🥑 정규표현식

 

입력예시

 

mark kim

jeno lee

100 100 100

90 90 90

 

출력 예시

mark kim's average =

jeno lee's average =

 

즉, char 입력받을 때 띄어쓰기도 포함시켜야 하는게 핵심!

 

 

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
#include<stdio.h>
#include<limits.h>
 
int main() {
    char c1[100];
    char c2[100];
 
    int score1[3];
    int score2[3];
 
    int d1 = sizeof(c1);
    int d2 = sizeof(c2);
 
    float avg[2];
 
    scanf_s("%[^\n]s", c1, d1);
    scanf_s(" %[^\n]s", c2, d2);
 
    for (int i = 0; i < 3; i++) {
        scanf_s("%d", score1 + i);
    }
    for (int i = 0; i < 3; i++) {
        scanf_s("%d", score2 + i);
    }
 
    float sum1 = 0;
    float sum2 = 0;
 
    for (int i = 0; i < 3; i++) {
        sum1 += score1[i];
        sum2 += score2[i];
    }
    sum1 /= 3;
    sum2 /= 3;
    avg[0= sum1;
    avg[1= sum2;
 
    printf("%s 's average = %.2f\n", c1, avg[0]);
    printf("%s 's average = %.2f", c2, avg[1]);
 
 
}
 
 
 
 
 
 
cs

 

여기서 띄어쓰기를 해주는 것이 핵심이다! 

jeno lee를 할때 jeno와 lee 사이에 띄어쓰기를 하면 이걸 \n으로 인식해서

다음줄로 넘어가서

jeno's average =

lee's average =

이따구로 나온다.

그래서 jeno lee를 한 뭉탱이로 인식하고 싶으면 두번째 scanf받을 때 앞에 공백을 넣도록!

그리고 %[^\n]s 라는게 \n 까지 문자열을 입력받는 방법이다. 

 

그리고 문자열 입력받을 때 scanf_s("%[^\n]s",배열,배열의 크기) 이런식으로 받아주는 것도 잊지 말것!

 

 

만약 2차원 문자열 배열에

 

jeno lee

jiwon lee 를 저장하고 싶다면

 

"와 %[^\n]s 사이에 공백을 만들어주면 된다!!

728x90
반응형

댓글