首頁>Club>
4
回覆列表
  • 1 # 守候依然不雨亦晴

    #include <iostream>

    #include <string>

    #include <stdlib.h>

    using namespace std;

    const int maxn=100;

    int number[maxn];

    char symbolt[maxn];

    string s,t;

    int i,j,p;

    void push()

    {

    p++;

    symbolt[p]=s[i];

    }

    void pop()

    {

    p--;

    switch (symbolt[p+1])

    {

    case "+":{number[p]+=number[p+1];break;}

    case "-":{number[p]=number[p]-number[p+1];break;}

    case "*":{number[p]=number[p]*number[p+1];break;}

    case "/":{number[p]=number[p]/number[p+1];break;}

    }

    }

    bool can()

    {

    if (((s[i]=="+")||(s[i]=="-"))&&(symbolt[p]!="(")) return true;

    if (((s[i]=="*")||(s[i]=="/"))&&((symbolt[p]=="*")||(symbolt[p]=="/"))) return true;

    return false;

    }

    int stringToNumber(string aStr)

    {

    int number = 0;

    for (int i=0;i<aStr.length();i++)

    {

    number = number*10 + aStr[i]-48;

    }

    return number;

    }

    int main()

    {

    cout<<"Input your string:";

    cin>>s;

    s="("+s+")";

    i=0;

    p=0;

    while (i<=s.length()-1)

    {

    while (s[i]=="(")

    {

    push();

    i++;

    }

    j=i;

    do

    {

    i++;

    }

    while ((s[i]>="0")&&(s[i]<="9"));

    int m;

    t="";

    int h=0;

    for(m=j;m<i;m++) t=t+s[m];

    number[p] = stringToNumber(t);;

    do

    {

    if (s[i]==")")

    {

    while (symbolt[p]!="(") pop();

    p--;

    number[p]=number[p+1];

    }

    else

    {

    while (can()) pop();

    push();

    }

    i++;

    }

    while ((i<=s.length())&&(s[i-1]==")"));

    }

    cout<<"Result="<<number[0]<<endl;

    }

  • 中秋節和大豐收的關聯?
  • 爸媽都70歲了沒坐過飛機沒去過旅遊,月薪1500元的你願意帶兩個老人家去旅遊嗎?