프로그래밍

형들 C프 질문좀하자

#include <stdio.h>

int n1, n2, result;
char conti;
void printMenu()
{
    printf("====================\n");
    printf("MENU\n");
    printf("====================\n");
    printf("1. 덧셈\n");
    printf("2. 뺄셈\n");
    printf("3. 곱셈\n");
    printf("4. 나눗셈\n");
    printf("5. 나머지\n");

}

int getMenu()
{
    int choice;
    printf("원하는 메뉴를 선택하시오(1-5): ");
    scanf("%d", &choice);
    return choice;
}

void get_integer()
{
    scanf("%d %d", &n1, &n2);
}

int plus()
{
    return (n1 + n2);
}

int minus()
{
    return (n1 - n2);
}

int multiply()
{
    return (n1 * n2);
}

int divide()
{
    return (n1 / n2);
}

int rest()
{
    return (n1 % n2);
}

void showResult()
{
    printf("연산결과: %d\n", result);
    conti = 'n';
}

int main()
{
    conti = 'y'; 
    while (1) 
    {
        if (conti == 'y') 
        {
            printMenu();
            int ch = getMenu();
            printf("숫자 2개를 입력하시오: ");
            get_integer();
            switch (ch)
            {
            case 1:
                result = plus();
                showResult();
                break;
            case 2:
                result = minus();
                showResult();
                break;
            case 3:
                result = multiply();
                showResult();
                break;
            case 4:
                result = divide();
                showResult();
                break;
            case 5:
                result = rest();
                showResult();
                break;
            }
        }
        else
        {
            printf("계속하려면 'y'를 입력하시오: ");
            scanf("%c", &conti);
        }
    }
    return 0;
}

 

여기서 y 말고 다른 값(아무거나) 입력하면 종료하는거 어떻게 해?

함수 많이 쓴거는 일부러 그런거임

7개의 댓글

[삭제 되었습니다]
@개밥멀리던지기대회

그러네 while 왜 저렇게 썻지 ㅋㅋㅋ 아오 반성해야지

0

입력을 else문 안에서 받으면 conti 값이 안바뀌잖아

0
@넥슨은다람쥐를뿌려라

전역변수라 값은 바뀌는거 아니에요?

0
@지나가던개붕이

아 값을 다른 함수에서 바꿔놨네

그럼 while 에 조건을 주거나 break 로 탈출시키거나

0
2020.05.25

1. printMenu 랑 getMenu 나눈 이유가 뭐임? printMenu가 printf 밖에 없는데, 나라면 두개 합침

 

 

2. Global variables을 쓸때 C++에서 값을 안넣고 선언하는건 좋지않은 습관임

왜그런지 보려면 값 아무것도 안넣은상태에서 저 변수들에 뭐가 들어있는지 확인해보면 알수있음

 

 

3. main()안에서 conti = 'y' 이부분도 2번이랑 같이 그냥 처음부터 선언하셈

 

 

4. while 조건이랑 if조건이랑 합치셈

y를 썼을때만 whileloop를 나가게 하려면 조건부를 conti != 'y'

 

님이 말한데로 y말고 다른값넣었을때 while 나가게하려면 조건부를 conti == 'y'

 

 

5. getMenu()안에 scanf에 들어가는값이 int인지 확실하게하고

 

 

6. 이해가 안가는게 getMenu()에서는 local variable로 scanf 읽어서 return 시켰는데

 

왜 get_integer()때는 global variables을 이용해서 읽는거임?

 

둘중에 하나로 통일하는게 낫지않나 싶음

 

그리고 5번이랑 똑같이 사용자가 int값을 제대로 쳤는지 확인해야함

 

 

7. switch구문안에 case는 다 공통적으로 showResult()를 불러오니까 계속 똑같이 쓰는것보다는 switch 밖에 showResult() 하나만 놓는게 좋을듯

 

 

8. divide()의 왜 return 이 int로 정의되어있음? 5나누기 2는 2.5지 2가 아님

 

float이나 double로 return 시키고 n1 이랑 n2 도 cast 똑같이 해주고

 

 

9. showResult()안에 conti = 'n'는 무슨의미로 있는거임?

 

만약에 conti 안의 값을 리셋시켜서 loop를 계속돌리는 용도라면

 

그럴필요 없음 scanf 만나는 순간에 콘솔은 멈춰있으니까

 

그리고 똑같이 conti안에 scanf로 넣을때 사용자가 char를 넣는지 확인하고

 

 

 

즐거운 c++ 되길

 

3
@흑기

피드백 고맙슴니다 엉님 하나 하나 찬찬히 읽어보면서 곱씹어 보겠습니다 헤헤

사랑해요 ㅁ + 한자 하트

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180375 [잡담] 이거 뭐라고 적혀있는거야 4 꺄꺄룽 0 1 시간 전 60
180374 [프로그래밍] 프론트엔드 개발자 연봉 1억 넘는 사람 있어? 2 잠적자 0 1 시간 전 127
180373 [모바일] 배터리 효율 떨어지면 휴대폰도 느려지나? 4 상한가 0 3 시간 전 109
180372 [잡담] 개꿀 당근에서 만원짜리 컴 득템 7 플게이어 2 11 시간 전 444
180371 [컴퓨터] 중고로 키크론 k3 pro? 라는 키보드를 구해왔는데 10 3th3 0 11 시간 전 225
180370 [견적] 이거 에센코어 KLEVV DDR4 PC4-25600 CL22 매우 싸게 나왔는... 11 부터시작하는이세... 0 16 시간 전 186
180369 [잡담] 모니터암 설치하는데 미스테리 4 사나이테스트 0 17 시간 전 308
180368 [컴퓨터] 음향 관련 잘아는 형들 질문... 3 Marlin 0 17 시간 전 135
180367 [잡담] 애드가드 안드로이드 kt-dpi 우회 업데이트 됨 어무니 0 18 시간 전 158
180366 [컴퓨터] m2 ssd를 메인보드 기준으로 슬롯 1번에 있는거 2번으로 옮기... 3 오뜨 0 18 시간 전 121
180365 [잡담] 유튜브앱 구간 스킵 방식이 바꼈네?? 4 츄이로 0 19 시간 전 189
180364 [컴퓨터] 이륙 허가좀 17 사촌간부랄빨기 0 19 시간 전 165
180363 [컴퓨터] 완전 컴알못인데 이 레노버 노트북 사도 될까? 13 Fiesta 0 20 시간 전 181
180362 [잡담] 천천히 충전하는 거 폰 배터리에 더 안 좋음? 6 개돼지무한리필 0 20 시간 전 156
180361 [잡담] 메타ai 공개 3 년차html개발자 1 20 시간 전 151
180360 [컴퓨터] p41을 서브 게임저장용은 낭비인가? 8 신우철 0 22 시간 전 165
180359 [정보] 해당 모니터암이 여기 모니터2개에 맞을지 모르겠습니다 2 골든베릴 0 1 일 전 128
180358 [견적] (직구) SK하이닉스 Platinum P41 2TB PCIe4.0 NVMe M.2 2280 ... 7 요기쪄 0 1 일 전 335
180357 [컴퓨터] 이거 괜찮은 가격인가요? 5 죽업 0 1 일 전 197
180356 [잡담] 급해서 특급운송으로 주문했는데... 오브 0 1 일 전 167