๋ถ์คํธ์ฝ์ค CS50 ์ฝ์นญ์คํฐ๋ 3์ฃผ์ฐจ ์์!
์ด๋ฒ ์ฃผ์๋ C์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฐฐ์ด์ ์์ฑํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค
ํ์คํ ๋์ด๋๊ฐ ์ฌ๋ผ๊ฐ ๋๋,,,,
์ด๋ฒ ์ฃผ๋ ์ ๋
David ๊ต์๋์ ๋ง์์ด ๋ ๋น ๋ฅด๊ฒ ๋๊ปด์ก๋ค ๐ต
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ๋๋ ์๋ฃํ์ ๋ฐ์ง์ง ์๊ณ ๋ณ์๋ฅผ ์ ์ธํ๋๋ฐ
C์ธ์ด์์๋ const int n; ์ฒ๋ผ ์๋ฃํ์ ๋ถ์ฌ ๋ณ์๋ฅผ ์ ์ธํ๋ค๋ ์ ์ด ์๋ฌ๋๋ค
๋ฐฐ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ฉด์ ์๋ ๋ง์ด ์ผ๊ธฐ ๋๋ฌธ์
์์
๋ฃ๋ ๋ฐ์๋ ํฌ๊ฒ ์ด๋ ค์์ ์์๋ค..!
3์ฃผ์ฐจ ํด์ฆ๋ 1๋ฒ ๋ค์ ํ๊ธด ํ์ง๋ง ๋ฌด๋ํ๊ฒ ํต๊ณผํ ์ ์์๋ค
๊ทธ๋ฌ๋....................
ํ๋ฏธ์
๋์ด๋๊ฐ ..... ์ด๊ฒ ๋จธ์ ์ผ์ด๊ณ .....
์ํ๋ฏธ์
์ด ์์ด์ ๊ทธ๊ฑธ ์ฐธ๊ณ ํด์ ํธ๋ ๋ฐ๋ ๋ํํ
๋๋ฌด ์ด๋ ค์ ๋ค ๐ญ
๊ฐ์ ํ์์ ๋์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์์์ผ๋
๋ค์ ์ฃผ๋ถํฐ ๋ฏธ์
์ด์ผ ํธ๋ .....
๊ทธ๋ ๊ฒ ์ด๋ ค์๋ณด์ด์ง ์๋๋ฐ ๋ง์ ํ๋ ค๋๊น
์ค๋ง ์๋ฌ์ ๋ด๋ง๋๋ก ๋๋๊ฑด ํ๋๋ ์์๋ค ๐ฌ
์์งํ ๋งํด์ ๊ฐ์ ํ์๋ถ์ ์ฝ๋๋ผ ์ฒ์ ๋ณด๋ ๋ฌธ๋ฒ๋ค ์์ฃผ๋ก
์ฃผ์์ ๋ฌ์ ๋๋ฆ ์ ๋ฆฌ๋ฅผ ํ๋ ์ ๋๋ก ๋์ ํ๋ฏธ์
์ฝ๋๋ฅผ ์ ์ถํ์๋ค
#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์ฃผ์ฐจ ๋ผ์ด๋ธ ๊ฐ์์์๋ ๋ฐฐ์ด์ ๋ํ ์ ๋ฐ์ ์ธ ์ ๋ฆฌ ํ
๋ถ์คํฐ๋ค์ด ์ฌ์ ์ ๋จ๊ฒจ๋ ์ง๋ฌธ์ด๋ ๋ผ์ด๋ธ ์ค์ ์ง๋ฌธ์ ๋ต๋ณ์ ํด์ฃผ์
จ๋ค
4์ฃผ์ฐจ๋ถํฐ๋ ๋ค๋ฅธ ์งํ์๋ถ๊ณผ ๊ฐ์ฌ๋์ด ์ค์ ๋ค๊ณ ํ๋ค
์์์ญ์ญ,,,๐ญ
2์ฃผ์ฐจ๊น์ง๋ ๊ฐ์๋ง ๋ฃ๊ณ ๋ ํ ์ฃผ์ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ ์ ์์๋ค ํ๋ฉด
3์ฃผ์ฐจ์๋ ๋ณธ๊ฒฉ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด์ ๊ฐ์๋ง์ผ๋ก๋ ์ํํด๋ด๊ธฐ๊ฐ ์ด๋ ค์ ๋ค ๐ฆ
์๋ฐ์คํฌ๋ฆฝํธ์์ if๋ฌธ, for๋ฌธ์ ๋ง์ด ์ฌ์ฉํด๋ดค์ผ๋ ์กฐ๊ธ ๋ ์์ํ๊ฒ ์์ฑํ ์ ์๊ฒ ์ง ํ๋๊ฑด ์ค๋ง ๊ทธ์์ฒด,,,,
C์ธ์ด๋ก ์ ํ๋๊น ์์ ๋ค๋ฅธ ๊ฑธ ๋ณด๋ ๋๋์ด๋ค ๐คง
๊ตฌ๊ธ๋ง ํ๋ฌ ๊ฐ์ผ๊ฒ ๋ค... ๋