Advertisement
deleanuradu

Procesor cu Stiva

Aug 24th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstring>
  4.  
  5. int main(){
  6.     int n, val, temp1, temp2;
  7.     char instr[10];
  8.     std::cin >> n;
  9.     std::vector<int> stack(1);
  10.     stack.pop_back();
  11.    
  12.     for(unsigned int i = 1; i <= n; i++){
  13.         std::cin >> instr;
  14.        
  15.         if(!strcmp("iload", instr)){
  16.             std::cin >> val;
  17.             stack.push_back(val);
  18.         }else if(!strcmp("iadd", instr)){
  19.             if(stack.size() > 1){
  20.                 temp1 = stack.back();
  21.                 stack.pop_back();
  22.                 temp2 = stack.back();
  23.                 stack.pop_back();
  24.                 stack.push_back(temp1 + temp2);
  25.             }else{
  26.                 std::cout << "Exception: line " << i << std::endl;
  27.             }
  28.         }else if(!strcmp("imul", instr)){
  29.             if(stack.size() > 1){
  30.                 temp1 = stack.back();
  31.                 stack.pop_back();
  32.                 temp2 = stack.back();
  33.                 stack.pop_back();
  34.                 stack.push_back(temp1 * temp2);
  35.             }else{
  36.                 std::cout << "Exception: line " << i << std::endl;
  37.             }
  38.         }else if(!strcmp("dup", instr)){
  39.             if(stack.size() > 0){
  40.                 temp1 = stack.back();
  41.                 stack.push_back(temp1);
  42.             }else{
  43.                 std::cout << "Exception: line " << i << std::endl;
  44.             }
  45.         }
  46.     }
  47.    
  48.     //DEBUG
  49.     /*
  50.     for(unsigned int i = stack.size(); i > 0; i--){
  51.             std::cout << "at index " << i << " " <<stack[i] << std::endl;
  52.         }
  53.         std::cout << "--------" <<std::endl;
  54.     **/
  55.    
  56.    
  57.    
  58.     std::cout << stack.size()  << std::endl;
  59.    
  60.     for(unsigned int i = stack.size() - 1; i >= 0; i--){
  61.         std::cout << stack[i] << std::endl;
  62.     }
  63.    
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement