728x90
#include<iostream>
#include<string>
using namespace std;
int main() {
cout << "< 덧셈, 뺄셈 프로그램 >" << endl;
string s;
cout << "7-23+5-100+25와 같이 덧셈, 뺄셈 문자열을 입력하세요." << endl;
getline(cin, s, '\n');
int sum = 0;
int startIndex = 0;
while (true) {
int fIndex = s.find('+', startIndex);
if (fIndex == -1) {
string part = s.substr(startIndex);
if (part == "") break;
else if (s.find('-', startIndex) != -1) {
int f = s.find('-', startIndex);
int c = f - startIndex;
string p = s.substr(startIndex, c);
cout << p << endl;
sum += stoi(p);
p = s.substr(f + 1, s.length() - 1);
cout << '-' << p << endl;
sum -= stoi(p);
break;
}
cout << part << endl;
sum += stoi(part);
break;
}
int count = fIndex - startIndex;
string part = s.substr(startIndex, count);
if (part.find("-") == -1) {
cout << part << endl;
sum += stoi(part);
}
else {
string a;
char oper = ' ';
if (part.at(0) == '-')
oper = '-';
else
a += (part.at(0));
for (int i = 1; i < count; i++) {
if (part.at(i) == '-') {
if (oper == '-') {
cout << '-' << a << endl;
sum -= stoi(a);
a.clear();
}
else {
cout << a << endl;
sum += stoi(a);
a.clear();
}
oper = '-';
}
else {
a += (part.at(i));
}
}
if (oper == '-'&&a.length() != 0) {
cout << '-' << a << endl;
sum -= stoi(a);
oper = ' ';
a.clear();
}
}
startIndex = fIndex + 1;
}cout << "숫자들의 합은 " << sum << endl;
}
반응형
'전공 공부 > C++' 카테고리의 다른 글
클래스 ArrayUtility (int배열을 double배열로, double배열을 int배열로) (0) | 2021.01.04 |
---|---|
함수 bigger (큰 값 구하기) (0) | 2021.01.04 |
알파벳 찍기 (정사각형) (0) | 2021.01.03 |
문자열 거꾸로 출력 (0) | 2021.01.03 |
클래스 Sample (가장 큰 수 구하기) (0) | 2021.01.03 |