본문 바로가기

Education

[부스트 코딩 뉴비 챌린지 2020] week2: mission

반응형

문제 풀이

문제1

풀이1)

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


int main(void) {
    int now = 5;
    int order = 3;
    int price = 10000;
    float percent = 1.1;

    printf("주문건수 : %i 건\n", order);
    printf("기존 재고량 : %i개\n", now);
    printf("남은 재고량 : %i개\n", now - new);
    printf("매출액(부가세포함) : %.f원\n", now * percent * price);
}

 

풀이2)

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

int main(void) {
    int now = 5;
    int order = 3;
    printf("주문건수 : %i 건\n", order);
    printf("기존 재고량 : %i개\n", now);
    
    now = now - order;
    printf("남은 재고량 : %i개\n", now);
    printf("매출액(부가세포함) : %.f원\n", now * 1.1 * 10000);
}

풀이3)

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


void list(int, int);

int main(void) {
    list(5,3);   
}

void list(int now, int order) {
    printf("주문건수 : %i 건\n", order);
    printf("기존 재고량 : %i개\n", now);
    
    now = now - order;
    printf("남은 재고량 : %i개\n", now);
    printf("매출액(부가세포함) : %.f원\n", now * 1.1 * 10000);
}

 

문제3

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

int main(void) {
    string day = get_string("요일을 입력하세요: ");

    if(strcmp(day, "월요일") == 0) {
        printf("%s : 청국장\n", day);
    } else if(strcmp(day, "화요일") == 0) {
        printf("%s : 비빔밥\n", day);
    } else if(strcmp(day, "수요일") == 0) {
        printf("%s : 된장찌개\n", day);
    } else if(strcmp(day, "목요일") == 0) {
        printf("%s : 칼국수\n", day);
    } else if(strcmp(day, "금요일") == 0) {
        printf("%s : 냉면\n", day);
    } else if(strcmp(day, "토요일") == 0) {
        printf("%s : 소불고기\n", day);
    } else if(strcmp(day, "일요일") == 0) {
        printf("%s : 오삼불고기\n", day);   
    } else {
        printf("월요일~일요일 중에서 입력하세요.\n");
        main();
    }
    return 0;
}

 

피드백

2주차 미션 제출 확인했습니다! 수고하셨습니다.

어떠한 함수든 마지막 줄은 return으로 끝나는 것이 좋습니다. main 함수가 int main(void) 형식이기 때문에 main 함수의 마지막에 return 0;을 추가해야 합니다. 지금은 에러가 나지 않았지만 추후에 큰 프로젝트를 할 때 문제가 될 수 있으니 함수가 끝나기 전에는 항상 return을 하는 습관을 들이시면 좋을 것 같습니다.

사소한 조언을 더 드리자면, 메뉴 이름 뒤에 \n을 붙여 프로그램이 종료된 후에 터미널의 $ 기호가 맨 앞에 위치할 수 있도록 하면 좋을 것 같습니다.

또한, main 함수를 재귀함수로 만드는 것은 일반적이지 않습니다. 루프를 사용하는 것이 좋겠습니다.

제출하신 코드를 바탕으로 제가 수정한 내용을 첨부합니다. 다만 꼭 저처럼 할 필요는 없으며, 동작만 한다면 세부사항은 모두 개발자의 재량이므로 ‘이렇게도 코딩할 수 있구나’ 정도로 참고만 하시면 됩니다.

 

느낀 점

while(1)을 이용하여 질문을 계속 던지고, 프로그램을 종료하시겠습니까?라는 물음에 i=1로 대답하게 되면 while문을 종료하게 된다(exit(0)).

루프를 사용하라는 말에 새로운 사용자 정의 함수를 만들어야할까? 라고 생각했는데 이렇게 간단한 방법으로 반복할 수 있다는 점에 놀랐다. 이 방법을 잘 알아두어야겠다.

반응형