Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cstring>
- int main(){
- int n, val, temp1, temp2;
- char instr[10];
- std::cin >> n;
- std::vector<int> stack(1);
- stack.pop_back();
- for(unsigned int i = 1; i <= n; i++){
- std::cin >> instr;
- if(!strcmp("iload", instr)){
- std::cin >> val;
- stack.push_back(val);
- }else if(!strcmp("iadd", instr)){
- if(stack.size() > 1){
- temp1 = stack.back();
- stack.pop_back();
- temp2 = stack.back();
- stack.pop_back();
- stack.push_back(temp1 + temp2);
- }else{
- std::cout << "Exception: line " << i << std::endl;
- }
- }else if(!strcmp("imul", instr)){
- if(stack.size() > 1){
- temp1 = stack.back();
- stack.pop_back();
- temp2 = stack.back();
- stack.pop_back();
- stack.push_back(temp1 * temp2);
- }else{
- std::cout << "Exception: line " << i << std::endl;
- }
- }else if(!strcmp("dup", instr)){
- if(stack.size() > 0){
- temp1 = stack.back();
- stack.push_back(temp1);
- }else{
- std::cout << "Exception: line " << i << std::endl;
- }
- }
- }
- //DEBUG
- /*
- for(unsigned int i = stack.size(); i > 0; i--){
- std::cout << "at index " << i << " " <<stack[i] << std::endl;
- }
- std::cout << "--------" <<std::endl;
- **/
- std::cout << stack.size() << std::endl;
- for(unsigned int i = stack.size() - 1; i >= 0; i--){
- std::cout << stack[i] << std::endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement