无标题

Run Settings
LanguageC++
Language Version
Run Command
#include<string> #include<cctype> #include<iostream> using namespace std; bool getint(string &s, int &a) { int ret = 0; if (s.size() == 0 || !isdigit(s[0])) return false; for (int i = 0, n = (int)s.size(); i < n; i++) { if (isdigit(s[i])) ret = ret * 10 + s[i] - '0'; else { s = s.substr(i); a = ret; return true; } } s = ""; a = ret; return true; } bool getop(string &s, char &a) { if (s.size() == 0 || !isgraph(s[0])) return false; switch (s[0]) { case '+': a = '+'; s = s.substr(1); return true; break; case '-': a = '-'; s = s.substr(1); return true; break; case '*': a = '*'; s = s.substr(1); return true; break; case '/': a = '/'; s = s.substr(1); return true; default: return false; break; } } bool jisuan(int &a, int &b, char &q) { if (a == 0 && b == 0) return false; switch (q) { case '+': a += b; b = 0; return true; break; case '-': a -= b; b = 0; return true; break; case '*': a *= b; b = 0; return true; break; case '/': a /= b; b = 0; return true; break; } } int main() { string s; cin >> s; int a, b; bool i = true; char q; if (getint(s, a) && getop(s, q) && getint(s, b)) if (jisuan(a, b, q)) b = 0; else cout << "出错1" << endl; else { cout << "出错" << endl; i=false; } while (true) { if (getop(s, q) && getint(s, b)) { if (jisuan(a, b, q)) b = 0; else { cout << "出错2" << endl; break; } } else { cout << "出错" << endl; i = false; break; } } if (i) cout << a << endl; system("pause"); }
Editor Settings
Theme
Key bindings
Full width
Lines