#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 말고 다른 값(아무거나) 입력하면 종료하는거 어떻게 해?
함수 많이 쓴거는 일부러 그런거임
개밥멀리던지기대회
지나가던개붕이
그러네 while 왜 저렇게 썻지 ㅋㅋㅋ 아오 반성해야지
넥슨은다람쥐를뿌려라
입력을 else문 안에서 받으면 conti 값이 안바뀌잖아
지나가던개붕이
전역변수라 값은 바뀌는거 아니에요?
넥슨은다람쥐를뿌려라
아 값을 다른 함수에서 바꿔놨네
그럼 while 에 조건을 주거나 break 로 탈출시키거나
흑기
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++ 되길
지나가던개붕이
피드백 고맙슴니다 엉님 하나 하나 찬찬히 읽어보면서 곱씹어 보겠습니다 헤헤
사랑해요 ㅁ + 한자 하트