zoukankan      html  css  js  c++  java
  • 仿LISP运算 | c++

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 /**
     4  *  仿LISP运算
     5  *  模拟(sub (mul 2 4) (div 9 3))
     6  * @return
     7  */
     8 
     9 int main() {
    10     int mark = 0;
    11     int num1,num2;
    12     string str;
    13     stack<int> numStatck;
    14     stack<string> operStack;
    15 
    16     getline(cin,str);
    17     for(int i = 0; i < str.length() ; i++)
    18     {
    19         char c = str[i];
    20         cout<<c<<" ";
    21         if(c == '(') {
    22             operStack.push(str.substr(i+1,3));
    23             i += 4;
    24             mark =  i + 1;
    25         } else if(c == ')') {
    26             if(mark < i) {
    27                 //stoi string --> int
    28                 numStatck.push(stoi(str.substr(mark,i-mark)));
    29 
    30                 i++;
    31                 mark = i + 1;
    32             }
    33             num1 = numStatck.top();
    34             numStatck.pop();
    35             num2 = numStatck.top();
    36             numStatck.pop();
    37             string ex = operStack.top();
    38             operStack.pop();
    39 
    40             if(ex == "add")
    41                 numStatck.push(num1+num2);
    42             else if(ex == "sub")
    43                 numStatck.push(num1-num2);
    44             else if (ex == "mul")
    45                 numStatck.push(num1*num2);
    46             else if( ex ==  "div")
    47                 if(num2 == 0) cout <<"ERROR"<<endl;
    48                 else
    49                     numStatck.push(num2/num1);
    50 
    51         } else {
    52             if(c == ' ') {
    53                 if(mark < i ) {
    54                     numStatck.push(stoi(str.substr(mark,i-mark)));
    55                     mark = i + 1;
    56                 }
    57             }
    58         }
    59     }
    60     cout<<"结果:";
    61     cout<<numStatck.top()<<endl;
    62     return 0;
    63 }
  • 相关阅读:
    正则表达式 常用的通配符
    自己做的前端试题总结
    【总结】IE和Firefox的Javascript兼容性总结
    对GCD的一些理解和实践
    兼容iOS 10 资料整理笔记
    iOS开发 适配iOS10以及Xcode8
    颜色控制
    UISegmentedControl 分段控件
    Target—Action
    UITouch 点击事件
  • 原文地址:https://www.cnblogs.com/jj81/p/11184338.html
Copyright © 2011-2022 走看看