๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๋ถ€์ŠคํŠธ์ฝ”์Šค CS50 ์ฝ”์นญ์Šคํ„ฐ๋”” 2๊ธฐ 3์ฃผ์ฐจ

์ด์€๋นˆ EUNBINยท2021๋…„ 2์›” 1์ผ
0
post-thumbnail

๋ถ€์ŠคํŠธ์ฝ”์Šค CS50 ์ฝ”์นญ์Šคํ„ฐ๋”” 3์ฃผ์ฐจ ์‹œ์ž‘!
์ด๋ฒˆ ์ฃผ์—๋Š” C์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ž‘์„ฑํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค

๐Ÿ“Œ 3์ฃผ์ฐจ ๋ฐฐ์—ด

ํ™•์‹คํžˆ ๋‚œ์ด๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ„ ๋„ˆ๋‚Œ,,,,
์ด๋ฒˆ ์ฃผ๋Š” ์œ ๋… David ๊ต์ˆ˜๋‹˜์˜ ๋ง์”€์ด ๋” ๋น ๋ฅด๊ฒŒ ๋Š๊ปด์กŒ๋‹ค ๐Ÿ˜ต

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ž๋ฃŒํ˜•์„ ๋”ฐ์ง€์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ๋Š”๋ฐ
C์–ธ์–ด์—์„œ๋Š” const int n; ์ฒ˜๋Ÿผ ์ž๋ฃŒํ˜•์„ ๋ถ™์—ฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค๋Š” ์ ์ด ์ƒ‰๋‹ฌ๋ž๋‹ค

๋ฐฐ์—ด๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•˜๋ฉด์„œ ์›Œ๋‚™ ๋งŽ์ด ์ผ๊ธฐ ๋•Œ๋ฌธ์—
์ˆ˜์—… ๋“ฃ๋Š” ๋ฐ์—๋Š” ํฌ๊ฒŒ ์–ด๋ ค์›€์€ ์—†์—ˆ๋‹ค..!

3์ฃผ์ฐจ ํ€ด์ฆˆ๋„ 1๋ฒˆ ๋‹ค์‹œ ํ’€๊ธด ํ–ˆ์ง€๋งŒ ๋ฌด๋‚œํ•˜๊ฒŒ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค
๊ทธ๋Ÿฌ๋‚˜....................

๐Ÿ“Œ 3์ฃผ์ฐจ ํŒ€๋ฏธ์…˜

ํŒ€๋ฏธ์…˜ ๋‚œ์ด๋„๊ฐ€ ..... ์ด๊ฒŒ ๋จธ์„  ์ผ์ด๊ณ  .....
์ƒ˜ํ”Œ๋ฏธ์…˜์ด ์žˆ์–ด์„œ ๊ทธ๊ฑธ ์ฐธ๊ณ ํ•ด์„œ ํ‘ธ๋Š” ๋ฐ๋„ ๋‚˜ํ•œํ… ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹ค ๐Ÿ˜ญ

๊ฐ™์€ ํŒ€์›์˜ ๋„์›€์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆœ ์žˆ์—ˆ์œผ๋‚˜
๋‹ค์Œ ์ฃผ๋ถ€ํ„ฐ ๋ฏธ์…˜ ์–ด์ผ€ ํ‘ธ๋ƒ .....

๊ทธ๋ ‡๊ฒŒ ์–ด๋ ค์›Œ๋ณด์ด์ง„ ์•Š๋Š”๋ฐ ๋ง‰์ƒ ํ’€๋ ค๋‹ˆ๊นŒ
์˜ค๋งŒ ์—๋Ÿฌ์™€ ๋‚ด๋ง˜๋Œ€๋กœ ๋˜๋Š”๊ฑด ํ•˜๋‚˜๋„ ์—†์—ˆ๋‹ค ๐Ÿšฌ

์†”์งํžˆ ๋งํ•ด์„œ ๊ฐ™์€ ํŒ€์›๋ถ„์˜ ์ฝ”๋“œ๋ผ ์ฒ˜์Œ ๋ณด๋Š” ๋ฌธ๋ฒ•๋“ค ์œ„์ฃผ๋กœ
์ฃผ์„์„ ๋‹ฌ์•„ ๋‚˜๋ฆ„ ์ •๋ฆฌ๋ฅผ ํ•˜๋Š” ์ •๋„๋กœ ๋‚˜์˜ ํŒ€๋ฏธ์…˜ ์ฝ”๋“œ๋ฅผ ์ œ์ถœํ•˜์˜€๋‹ค

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


// [ํ•™์  ํ…Œ์ด๋ธ”์„ ์œ„ํ•œ ์ƒ์ˆ˜ ์„ ์–ธ]
const int NUMBER_OF_GRADES = 9;
const int SCORES[NUMBER_OF_GRADES] = {95, 90, 85, 80, 75, 70, 65, 60, 0};
const char *GRADES[NUMBER_OF_GRADES] = {"A+", "A", "B+", "B", "C+", "C", "D+", "D", "F"};

char* calculateGrade(int score, const int scores[], const char *grades[], int length);


int main(int argc, char *argv[])
{
    printf("ํ•™์  ํ”„๋กœ๊ทธ๋žจ\n");
    printf("์ข…๋ฃŒ๋ฅผ ์›ํ•˜๋ฉด \"999\"๋ฅผ ์ž…๋ ฅ\n");
    printf("[ ํ•™์  ํ…Œ์ด๋ธ” ]\n");
    printf("์ ์ˆ˜ : 95\t90\t85\t80\t75\t70\t65\t60\t0\n");
    printf("ํ•™์  : A+\tA\tB+\tB\tC+\tC\tD+\tD\tF\n");

    // [์ดˆ๊ธฐ๊ฐ’]
    int score = 0;
    char *grade = "";

    // [999๋ฅผ ๋ˆ„๋ฅด์ง€ ์•Š์•˜๋‹ค๋ฉด]
    while(score != 999)
    {
        printf("์„ฑ์ ์„ ์ž…๋ ฅํ•˜์„ธ์š”. (0 ~ 100) : ");
        scanf("%d", &score);
        // scanf("์ž…๋ ฅ๋ฐ›์„ํ˜•ํƒœ", ์ž…๋ ฅ๋ฐ›์„๊ณต๊ฐ„์˜์ฃผ์†Œ)
        // %d : 10์ง„์ˆ˜ ์ •์ˆ˜ํ˜•
        // & : ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ
        
        // [999๋ฅผ ๋ˆŒ๋ ธ๋‹ค๋ฉด while๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ€ ์ข…๋ฃŒ ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅ]
        if(score == 999)
        {
            break;
        }

        // [์„ฑ์ ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด]
        if(score >= 0 && score <= 100)
        {
            grade = calculateGrade(score, SCORES, GRADES, NUMBER_OF_GRADES);
            printf("ํ•™์ ์€ %s ์ž…๋‹ˆ๋‹ค.\n", grade);
        }
         // [์„ฑ์ ์„ ์ž˜๋ชป ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด]
        else
        {
            printf("** %d ์„ฑ์ ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅํ•˜์„ธ์š”. ๋ฒ”์œ„๋Š” 0 ~ 100 ์ž…๋‹ˆ๋‹ค.\n", score);
        }
    }
    printf("ํ•™์  ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.\n");
}


 // [ํ•™์  ๊ณ„์‚ฐ ํ•จ์ˆ˜]
char* calculateGrade(int score, const int scores[], const char *grades[], int length)
{
    char *grade = "";

    for(int i = 0; i < length; i++)
    {
        if(score >= scores[i])
        {
            grade = malloc(sizeof(char) * strlen(grades[i]));
            // malloc(sizeof(char)) : char์˜ ํฌ๊ธฐ์ธ 1๋ฐ”์ดํŠธ๋งŒํผ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
            // โ†’ grade = malloc(sizeof(char) * strlen(grades[i])) : 1 * grades[i]์˜ ๋ฌธ์ž ๊ธธ์ด ๋งŒํผ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
			strcpy(grade, grades[i]);
			// strcpy : ๋Œ€์ƒ ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ํ•จ์ˆ˜
			// โ†’ strcpy(grade, grades[i]) : grade[i]๋ฅผ grade๋กœ ๋ณต์‚ฌ
			break;
		}
	}

	return grade;
}

์•„๋‹ˆ... ์„ ์ƒ๋‹˜๋œ... ์ „ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋„ ์ฒจ ๋“ค์–ด๋ณธ๋‹ค๊ตฌ์š”...
๊ฐ•์˜์—๋„ ์•ˆ ๋‚˜์™”์—ˆ๋Š”๋ฐ เฒฅ_เฒฅ

์šฐ๋ฆฌ ํŒ€ ์ฝ”์น˜์ธ Joo์ฝ”์น˜๋‹˜๊ป˜ ์–ด๋–จ ๋•Œ ๋ณ€์ˆ˜ ์•ž์— *์„ ๋ถ™์ด๋Š” ๊ฑฐ๋ƒ๊ณ  ๋ฌผ์–ด๋ด์„œ
ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ผ๋Š”๊ฒŒ ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค..ใ…Ž..ใ…Žใ…Ž..

๊ทธ๋ ‡๊ตฌ๋‚˜... ๊ทธ๋Ÿฐ๊ฒŒ ์žˆ๊ตฌ๋‚˜...

๐Ÿ“Œ 3์ฃผ์ฐจ ๋ผ์ด๋ธŒ ๊ฐ•์˜

3์ฃผ์ฐจ ๋ผ์ด๋ธŒ ๊ฐ•์˜์—์„œ๋Š” ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ •๋ฆฌ ํ›„
๋ถ€์Šคํ„ฐ๋“ค์ด ์‚ฌ์ „์— ๋‚จ๊ฒจ๋‘” ์งˆ๋ฌธ์ด๋‚˜ ๋ผ์ด๋ธŒ ์ค‘์˜ ์งˆ๋ฌธ์— ๋‹ต๋ณ€์„ ํ•ด์ฃผ์…จ๋‹ค

4์ฃผ์ฐจ๋ถ€ํ„ฐ๋Š” ๋‹ค๋ฅธ ์ง„ํ–‰์ž๋ถ„๊ณผ ๊ฐ•์‚ฌ๋‹˜์ด ์˜ค์‹ ๋‹ค๊ณ  ํ•œ๋‹ค
์‹œ์›์„ญ์„ญ,,,๐Ÿ˜ญ

๐Ÿ“Œ 3์ฃผ์ฐจ ํ›„๊ธฐ

2์ฃผ์ฐจ๊นŒ์ง€๋Š” ๊ฐ•์˜๋งŒ ๋“ฃ๊ณ ๋„ ํ•œ ์ฃผ์˜ ๊ณผ์ •์„ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค ํ•˜๋ฉด
3์ฃผ์ฐจ์—๋Š” ๋ณธ๊ฒฉ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ฐ•์˜๋งŒ์œผ๋กœ๋Š” ์†Œํ™”ํ•ด๋‚ด๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹ค ๐Ÿ’ฆ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ if๋ฌธ, for๋ฌธ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ดค์œผ๋‹ˆ ์กฐ๊ธˆ ๋” ์ˆ˜์›”ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€ ํ–ˆ๋˜๊ฑด ์˜ค๋งŒ ๊ทธ์ž์ฒด,,,,
C์–ธ์–ด๋กœ ์ ‘ํ•˜๋‹ˆ๊นŒ ์™„์ „ ๋‹ค๋ฅธ ๊ฑธ ๋ณด๋Š” ๋Š๋‚Œ์ด๋‹ค ๐Ÿคง

๊ตฌ๊ธ€๋ง ํ•˜๋Ÿฌ ๊ฐ€์•ผ๊ฒ ๋‹ค... ๋™

profile
Frontend Engineer & Value Creator

0๊ฐœ์˜ ๋Œ“๊ธ€