๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/CS50 ์ฝ”์นญ์Šคํ„ฐ๋””

[CS50 ์ฝ”์นญ์Šคํ„ฐ๋””] 3์ฃผ์ฐจ_๋ฐฐ์—ด

by - ์˜คํŠธ - 2021. 2. 27.

[3์ฃผ์ฐจ ๊ฐœ๋…]

โœ”๏ธ ์ปดํŒŒ์ผ๋ง - ์ปดํŒŒ์ผ๋ง, ์–ด์…ˆ๋ธ”๋ง, ๋งํ‚น

์ „์ฒ˜๋ฆฌ -> ์ปดํŒŒ์ผ๋ง -> ์–ด์…ˆ๋ธ”๋ง -> ๋งํ‚น

์ „์ฒ˜๋ฆฌ : ์‹ค์งˆ์ ์ธ ์ปดํŒŒ์ผ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ์ „์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹คํ–‰

์ปดํŒŒ์ผ๋ง : C์ฝ”๋“œ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ผ๋Š” ์ €์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ปดํŒŒ์ผ

์–ด์…ˆ๋ธ”๋ง : ์–ด์…ˆ๋ธ” ๋‹จ๊ณ„๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์˜ค๋ธŒ์ ํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜(=์—ฐ์†๋œ 0๊ณผ 1๋“ค๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ž‘์—…)

๋งํ‚น : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด ํ•˜๋‚˜์˜ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋กœ ํ•ฉ์นจ

 

โœ”๏ธ ๋””๋ฒ„๊น… - ๋””๋ฒ„๊น…,  help50, debug50

๋ฒ„๊ทธ : ์ฝ”๋“œ์— ๋“ค์–ด์žˆ๋Š” ์˜ค๋ฅ˜

๋””๋ฒ„๊น… : ์ฝ”๋“œ์— ์žˆ๋Š” ๋ฒ„๊ทธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๊ณ ์น˜๋Š” ๊ณผ์ •

 

โœ”๏ธ ์ฝ”๋“œ์˜ ๋””์ž์ธ - check50, style50, ๊ณ ๋ฌด ์˜ค๋ฆฌ

check50 : ์ž๋™ ๊ฒ€์‚ฌ ํ”„๋กœ๊ทธ๋žจ

style50 : ์ฝ”๋“œ๊ฐ€ ์‹ฌ๋ฏธ์ ์œผ๋กœ ์ž˜ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ

 

โœ”๏ธ ๋ฐฐ์—ด(1) - ๋ฐฐ์—ด

 

โœ”๏ธ ๋ฐฐ์—ด(2) - ๋ฐฐ์—ด, ์ „์—ญ ๋ณ€์ˆ˜

์ „์—ญ ๋ณ€์ˆ˜ : ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฐ’(=์ƒ์ˆ˜), ์„ ์–ธ ์‹œ ๋ณ€์ˆ˜ ์•ž์— const ์‚ฌ์šฉํ•˜๊ณ  ๋ณ€์ˆ˜๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐ

๋ฐฐ์—ด ๋™์  ์„ ์–ธ ๋ฐ ์ €์žฅ : ๋ฃจํ”„์™€ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ข€ ๋” ๋™์ ์ธ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๊ฐ€๋Šฅ

 

โœ”๏ธ ๋ฌธ์ž์—ด๊ณผ ๋ฐฐ์—ด - ๋ฌธ์ž, ๋ฌธ์ž์—ด

๋ฌธ์ž์—ด์˜ ๊ฐ€์žฅ ๋์˜ ‘\0’์€ ๋ฌธ์ž์—ด์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋„ ์ข…๋‹จ ๋ฌธ์ž

 

โœ”๏ธ ๋ฌธ์ž์—ด์˜ ํ™œ์šฉ - strlen, toupper

strlen : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜

toupper : ๋Œ€๋ฌธ์ž ๋ณ€ํ™˜

 

โœ”๏ธ ๋ช…๋ นํ–‰ ์ธ์ž - ๋ช…๋ นํ–‰ ์ธ์ž, argv, argc

int main(int argc, string argv[]) ์—์„œ

argc : main ํ•จ์ˆ˜๊ฐ€ ๋ฐ›๊ฒŒ ๋  ์ž…๋ ฅ์˜ ๊ฐœ์ˆ˜

argv[] : ์ž…๋ ฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋ฐฐ์—ด(string ๋ฐฐ์—ด)

 

 

[3์ฃผ์ฐจ ํŒ€๋ณ„๋ฏธ์…˜]

#include <stdio.h>
#include <cs50.h>

void printTable(void); // ํ•™์  ํ…Œ์ด๋ธ” ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ์„ ์–ธ
void calculate(void); // ํ•™์  ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ์„ ์–ธ
const int exitCode = 999; // ์ƒ์ˆ˜(์ข…๋ฃŒ ์ฝ”๋“œ) ์„ ์–ธ

int main(void) {
    printTable(); // ํ•™์  ํ…Œ์ด๋ธ” ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ
    calculate(); // ํ•™์  ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ
}

void printTable(void) { 
    printf("ํ•™์  ํ”„๋กœ๊ทธ๋žจ\n์ข…๋ฃŒ๋ฅผ ์›ํ•˜๋ฉด \"999\" ๋ฅผ ์ž…๋ ฅ\n");
    printf("[ํ•™์  ํ…Œ์ด๋ธ”]\n");
    printf("์ ์ˆ˜ : 95      90      85      80      75      70      65      60      0\n");
    printf("ํ•™์  : A+      A       B+      B       C+      C       D+      D       F \n");
}

void calculate(void) {
    
    int number = 0; // ์ž…๋ ฅ๋ฐ›๋Š” ์ ์ˆ˜ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
    char* score[9] = {"A+", "A", "B+", "B", "C+", "C", "D+", "D", "F"}; // ๋ฌธ์ž์—ด(ํ•™์ ) ์ €์žฅํ•˜๋Š” ํฌ์ธํ„ฐ ๋ฐฐ์—ด ์„ ์–ธ

    while (number != exitCode) { // 999๋ฅผ ์ž…๋ ฅ๋ฐ›์ง€ ์•Š๋Š” ๋™์•ˆ ๋ฐ˜๋ณต
        printf("์„ฑ์ ์„ ์ž…๋ ฅํ•˜์„ธ์š”(0 ~ 100) : ");
        scanf("%d", &number);
        
        if (number == exitCode) { // 999๋ฅผ ์ž…๋ ฅํ•˜๋ฉด while๋ฌธ์„ ํƒˆ์ถœํ•˜์—ฌ ์ข…๋ฃŒ
            printf("ํ•™์  ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.");
            break; // while๋ฌธ ํƒˆ์ถœ
        } 
        else if (number < 0 || number > 100) { // 0~100์˜ ๋ฒ”์œ„์•ˆ์— ๋“œ๋Š”์ง€ ๊ฒ€์‚ฌ
            printf("** %d ์„ฑ์ ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅํ•˜์„ธ์š”. ๋ฒ”์œ„๋Š” 0 ~ 100 ์ž…๋‹ˆ๋‹ค.\n", number);
        }
        else if (number >= 95) { // 95์ด์ƒ์ด๋ฉด A+ ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[0]);
        }
        else if (number >= 90) { // 90์ด์ƒ์ด๋ฉด A ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[1]);
        }
        else if (number >= 85) { // 85์ด์ƒ์ด๋ฉด B+ ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[2]);
        }
        else if (number >= 80) { // 80์ด์ƒ์ด๋ฉด B ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[3]);
        }
        else if (number >= 75) { // 75์ด์ƒ์ด๋ฉด C+ ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[4]);
        }
        else if (number >= 70) { // 70์ด์ƒ์ด๋ฉด C ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[5]);
        }
        else if (number >= 65) { // 65์ด์ƒ์ด๋ฉด D+ ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[6]);
        }
        else if (number >= 60) { // 60์ด์ƒ์ด๋ฉด D ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[7]);
        }
        else { // ๊ทธ ์™ธ(60 ๋ฏธ๋งŒ)์— ํ•ด๋‹นํ•˜๋ฉด F ์ถœ๋ ฅ
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", score[8]);
        }
    }
}