#include<string>
#include<vector>
#include<iostream>
using namespace std;
int calcuMulti(string str)
{
int sum = str[0] - '0';
for (int i = 1; i < str.size() ; i += 2)
{
if (str[i] == '*')
{
sum *= str[i + 1] - '0';
}
if (str[i] == '/')
{
sum /= str[i + 1] - '0';
}
}
return sum;
}
void Print(vector<string>rec)
{
for (int i = 0; i < rec.size(); i++)
{
cout << rec[i] << endl;
calcuMulti(rec[i]);
}
}
int calcu(const char* expr)
{
string exprToString = "";
int exprLen = strlen(expr);
for (int i = 0; i < exprLen; i++)
{
exprToString += expr[i];
}
vector<string>multiSubString;
vector<int>sigleNumber;
vector<char>caractorPlusAndRlease;
int i ;
for (i=1; i < exprToString.size()-2; i+=2)
{
/* 加减 */
if (exprToString[i] == '+' || exprToString[i] == '-')
{
int j = i+2 ;
string temp="";
bool isFirst = true;
while (exprToString[j] == '*' || exprToString[j] == '/')
{
if (isFirst)
{
temp += exprToString[j - 1];
temp += exprToString[j];
temp += exprToString[j + 1];
j += 2;
isFirst = false;
}
else
{
temp += exprToString[j];
temp += exprToString[j + 1];
j += 2;
}
}
if (temp.size() != 0)
{
multiSubString.push_back(temp);
}
i = j-2;
}
else /* 乘除 */
{
int j = i + 2;
string temp = "";
temp += exprToString[j - 1];
temp += exprToString[j];
temp += exprToString[j + 1];
bool isFirst = true;
while (exprToString[j] == '*' || exprToString[j] == '/')
{
if (isFirst)
{
temp += exprToString[j - 1];
temp += exprToString[j];
temp += exprToString[j + 1];
j += 2;
isFirst = false;
}
else
{
temp += exprToString[j];
temp += exprToString[j + 1];
j += 2;
}
}
multiSubString.push_back(temp);
i = j-2 ;
}
}
for (i = 1; i < exprToString.size() - 2; i += 2)
{
if (exprToString[i] == '+')
{
caractorPlusAndRlease.push_back(exprToString[i]);
}
else if (exprToString[i] == '-')
{
caractorPlusAndRlease.push_back(exprToString[i]);
}
else
{
continue;
}
}
//vector<int>sigleNumber;
//vector<char>caractorPlusAndRlease;
/*
for (i = 1; i < exprToString.size() - 2; i += 2)
{
if (i == 1)
{
if ((exprToString[i] == '+' || exprToString[i] == '-') &&
exprToString[i + 2] == '*' || exprToString[i + 2] == '/'
)
{
sigleNumber.push_back(exprToString[i] - '0');
i += 2;
}
}
else
{
if ((exprToString[i] == '+' || exprToString[i] == '-') &&
exprToString[i + 2] == '*' || exprToString[i + 2] == '/'
)
{
if (exprToString[i - 2] == '*' || exprToString[i - 2] == '/')
{
i += 2;
}
else
{
sigleNumber.push_back(exprToString[i+1] - '0');
i += 2;
}
}
}
}
*/
Print(multiSubString);
cout << "string = " << exprToString << endl;
return 0;
}
int main()
{
calcu("1+2+3*4+5*6*7*8/9+8+7+6*3");
return 0;
}