5_10강 숙제 질문입니다.
282
작성한 질문수 11
안녕하세요.
이번 숙제는 간단한것 같았는데 생각만큼 잘 안되서 한참 헤맸습니다.
이전 강의를 여러번 복습해서 겨우 숙제대로 코드를 짰는데요, 마음에 안드는 것이 있어서 질문글 남깁니다.
숫자 입력값 받고, 연산자 입력값 받고(연산자는 +,-,*,/) 다시 숫자 입력값을 받아서 값을 계산하는 프로그램을 짜는 것인데,
아래의 코드로는 실행이 됩니다만, 연산자 입력때 ++ 혹은 +-, -+ 등 연산자를 두개 이상 입력할 경우 먼저 입력한 연산자로 실행이 됩니다. 원래는 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장에서 더 자세히 다룹니다. 건너뛰지 말고 꾸준히 순서대로 공부해나가시는 것이 좋습니다.
변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠
1
466
1
메모리 주소 10진수로 출력
1
653
1
클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.
1
500
1
여러가지 리턴 타입에 관한 강의가 어떤 걸까요?
1
534
1
메모리 주소에 관한 질분
0
679
1
인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.
0
549
1
형변환 오버로딩에서 const 관련 질문이 있습니다.
0
443
1
Digit 뒤에 reference를 사용하는 이유
0
510
1
4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결
0
323
1
dat파일이...
0
539
1
TODO:대입 연산자 오버로딩에 대한 소스코드입니다.
0
644
1
복사 생성자 관련 질문이 있습니다.
0
454
1
수업 중 궁금한점이 있습니다.
1
390
1
라이브러리자체가 이해가 되지 않습니다.
0
561
1
마지막 예제 질문
0
302
1
증감연산자 위치에 따른 수행 순서 질문입니다.
0
375
1
단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.
1
412
1
friend함수 관련 질문이 있습니다.
0
312
1
operator+ 정의부분에서 궁금한 것이 있습니다.
0
447
1
3분 17초 질문
0
350
1
함수에 값을 대입한다는 개념이 이해가 되지 않습니다.
0
448
1
int getvalue() const에서 const는 왜 뒤에 붙는건가요?
0
445
2
const Something &st에서 const를 빼면 안되나요?
0
300
1
friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??
1
493
1





