인프런 커뮤니티 질문&답변
5_10강 숙제 질문입니다.
작성
·
280
1
안녕하세요.
이번 숙제는 간단한것 같았는데 생각만큼 잘 안되서 한참 헤맸습니다.
이전 강의를 여러번 복습해서 겨우 숙제대로 코드를 짰는데요, 마음에 안드는 것이 있어서 질문글 남깁니다.
숫자 입력값 받고, 연산자 입력값 받고(연산자는 +,-,*,/) 다시 숫자 입력값을 받아서 값을 계산하는 프로그램을 짜는 것인데,
아래의 코드로는 실행이 됩니다만, 연산자 입력때 ++ 혹은 +-, -+ 등 연산자를 두개 이상 입력할 경우 먼저 입력한 연산자로 실행이 됩니다. 원래는 Invalid input, please try again 이 뜰꺼라고 생각했는데 나오지 않아서 당황했습니다.
switch case로 만들어 보라고 하셔서 아래대로 했는데 뭔가 깔끔하지 않은 느낌도 들고 코딩은 했는데 찝찝한 느낌이 가시질 않네요. enum class도 사용해보고 싶었는데 잘 안되서 벽에 막힌 기분입니다.
어떻게 고칠 수 있을까요?
#include <iostream>using namespace std;
int getInt()
{
while (1)
{
cout << "Enter an integer number : ";
int x;
cin >> x;
cin.ignore(32767, '\n');
if (cin.fail())
{
cin.clear();
cout << "Invalid Number, please try again." << endl;
}
else { return x; }
}
}
char getOperator()
{
while (1)
{
cout << "Enter an operator :";
char ch;
cin >> ch;
cin.ignore(32767, '\n');
switch (ch)
{
case '+':
return ch;
break;
case '-':
return ch;
break;
case '*':
return ch;
break;
case '/':
return ch;
break;
default: cout << "Invalid input, please try again" << endl;
}
}
}
void printCalc(int a, int b, char c)
{
switch (c)
{
case '+':
cout << (a + b);
break;
case '-':
cout << (a - b);
break;
case '*':
cout << (a * b);
break;
case '/':
cout << (a / b);
break;
}
cout << endl;
}
int main()
{
int x = getInt();
char op = getOperator();
int y = getInt();
printCalc(x, y, op);
return 0;
}
답변 1
0
5장까지 보셨다면 지금 푸신 정도로도 충분합니다만 발전 욕구가 있으시군요. 컴퓨터와 프로그래밍을 조금 더 깊게 이해하기 시작하신겁니다. 현대 프로그래밍은 이런 점들을 쉽게 처리할 수 있는 방법들을 다양하게 제공합니다만 본 강의는 기본 강의여서 기초부터 공부해나가시다 보니 일시적으로 답답하실 수 있습니다. 일단은 의문을 계속 머리에 담은 상태에서 전체 문법을 한 번 훑어보신 후에 다시 풀어보시는 것을 권장합니다. 입출력에 대해서는 18장에서 더 자세히 다룹니다. 건너뛰지 말고 꾸준히 순서대로 공부해나가시는 것이 좋습니다.





