#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cout << "문자 입력:" << endl;
getline(cin, s, '\n');
int sum = 0;
int startindex = 0;
while (true)
{
if (s.find('-') != string::npos) {
int findex = s.find('-', startindex);
if (findex == -1)
{
string part = s.substr(startindex);
if (part == "")
break;
cout << part << endl;
sum -= stoi(part);
break;
}
int count = findex - startindex;
string part = s.substr(startindex, count);
cout << part << endl;
sum += stoi(part);
startindex = findex + 1;
}
else if (s.find('+') != string::npos) {
int findex = s.find('+', startindex);
if (findex == -1)
{
string part = s.substr(startindex);
if (part == "")
break;
cout << part << endl;
sum += stoi(part);
break;
}
int count = findex - startindex;
string part = s.substr(startindex, count);
cout << part << endl;
sum += stoi(part);
startindex = findex + 1;
}
}
cout << "합은:" << sum << endl;
}
+와 - 문자를 인식해서 덧셈 뺄셈
즉 10+20-30-40+50 이런식으로 계산해주는 프로그램인데요
처음에 10+10이나 10-10은 잘먹히는데
그다음부턴(예를 들어서 10+10-30) 얘가 맛이 가버려요
뭐가 문제일까요?
디버깅
보니까 10+10-30하면 -에서 걸려서 10+10이 part가 되고, 결국 stoi(part)한 결과인 sum이 10이 될거고, 그 다음 다시 -30이 되니까 값이 이상하게 나올 것 같은데
F10, F11눌러가면서 디버깅해봐. 비주얼 스튜디오 쓸거아냐
ㄴ 디버깅해도 원하는 값이 안나와요 ㅜㅜ
내 생각엔, while문 안에서, -를 먼저 검사하고, +를 검사하잖아. 그럴게 아니라, -랑 +조건 검사를 동시에 한다음에, if문 안에서 그게 -인지 +인지 따져보고 처리를 해줘야 될 것 같아. 지금은 -먼저 검사하니까, 10 + 10 - 30하면, 10 + 10이 한꺼번에 part가 되어서 오류가 생기는 것 같음
ㄴ 동시에 find를 어떻게 쓰나요?
대충 짜서 보여줄게 기다려봐
ㄴ 감사합니다!