题目1101:计算表达式(栈的使用)

题目链接:http://ac.jobdu.com/problem.php?pid=1101

详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus

参考代码:

//
//  1101 计算表达式.cpp
//  Jobdu
//
//  Created by PengFei_Zheng on 06/05/2017.
//  Copyright © 2017 PengFei_Zheng. All rights reserved.
//

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <cstring>
#include <cmath>
#include <climits>
#include <stack>

using namespace std;

stack<int> myStack;

int main(){
    int firstNum;
    while(scanf("%d",&firstNum)!=EOF){
        while(!myStack.empty()) {
            myStack.pop();
        }
        myStack.push(firstNum);
        char op;
        while(scanf("%c",&op)!=EOF && op!=‘\n‘){
            int nextNum;
            scanf("%d",&nextNum);
            switch(op){
                case ‘+‘:{
                    myStack.push(nextNum);
                    break;
                }
                case ‘-‘:{
                    myStack.push(0-nextNum);
                    break;
                }
                case ‘*‘:{
                    int tmp1 = myStack.top();
                    myStack.pop();
                    myStack.push(tmp1*nextNum);
                    break;
                }
                case ‘/‘:{
                    int tmp2 = myStack.top();
                    myStack.pop();
                    myStack.push(tmp2/nextNum);
                    break;
                }
                default:
                    break;
            }
        }

        int ans = 0;
        while(!myStack.empty()){
            int tmp = myStack.top();
            ans += tmp;
            myStack.pop();
        }
        printf("%d\n",ans);
    }
    return 0;
}
/**************************************************************
    Problem: 1101
    User: zpfbuaa
    Language: C++
    Result: Pending
****************************************************************/
时间: 2024-12-05 17:04:53

题目1101:计算表达式(栈的使用)的相关文章

九度[1101]计算表达式

1 # include<cstdio> 2 # include<iostream> 3 # include<cstring> 4 using namespace std; 5 struct node{ 6 int value; 7 int next; 8 }a[500]; 9 char c[100]; 10 int main(){ 11 char s[500]; 12 while(scanf("%s",s)!=EOF){ 13 int l=strle

题目1101 :计算表达式 (运算符操作)方法比较简洁

题目1101:计算表达式 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5469 解决:1703 题目描述: 对于一个不存在括号的表达式进行计算 输入: 存在多种数据,每组数据一行,表达式不存在空格 输出: 输出结果 样例输入: 6/2+3+3*4 样例输出: 18 #include <iostream> #include<stdio.h> using namespace std; //6/2+3+3*4 int main() { char ch; int i,temp

华为上机练习题--计算表达式

题目: 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形. 例如:  输入:3+8×2/9-2 输出:2 函数原型 public int getMyRet(String str) 分析: 这个题目略显高端啊, 像我这种非专业的自学者,还真没有学过编译原理之类的课程, 要自己实现一个这种小型的编译器是非常困难啊, 所幸的是这个题目是用java来实现的, 而我本身也曾经看到过用java来实现这类的问题, 这类问题有一种方法就是实现类编译器功能的函数, 这个我是驾驭不

stack计算表达式的值

9.52 使用stack对象处理带圆括号的表达式.遇到左圆括号时,将其标记下来.当你在一个左括号之后遇到右圆括号时,弹出stack对象中这两边括号之间的元素,直到遇到左括号,将左括号也一起弹出栈. 接着在stack对象中压入一个值,用以表明这个用一对圆括号括起来的表达式已经被替换. 程序如下: #include<iostream> #include<stack> #include<string> using namespace std; int main() { sta

poj3295 Tautology , 计算表达式的值

给你一个表达式,其包括一些0,1变量和一些逻辑运算法,让你推断其是否为永真式. 计算表达式的经常使用两种方法:1.递归: 2.利用栈. code(递归实现) #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <string> using namespace std; char str[2000]; int pos; bool ca

中缀表达式转后缀表达式---栈--二叉树---四则运算

我们平常书写的四则运算表达式属于中缀表达式,形式为"9+(3-1)*3+10/2",因为所有的运算符号都在两操作数之间,所以称为中缀表达式.我们使用中缀表达式来计算表达式的值,不过这种形式并不适合计算机求解.接下来,我们将中缀表达式转化为后缀表达式,所谓的后缀表达式就是操作符位于操作数后面的不包含括号的算数表达式,也叫做逆波兰表达式. 1)首先介绍一种人工的转化方法(http://www.cnblogs.com/MichaelYin/archive/2012/05/02/2479248

Visual Studio断点调试, 无法监视变量, 提示无法计算表达式

在使用Visual Studio 2012进行断点调试时,对某个变量添加监视,出现"无法计算表达式"的提示. 解决办法:依次点击菜单栏中的"调试"→"图形"→"启动诊断" 期间会出现类似如下界面: 公共符号下载完毕,断点调试,变量监视功能恢复正常!

题目:计算1~100中所有3的倍数的个数

/* */ #include <stdio.h> int main() { // 记录3的倍数的个数 int count = 0; // 记录当前检查的数值 int number = 0; while (number < 100) { number++; // 说明number是3的倍数 if (number%3 == 0) { count++; } } printf("1~100内3的倍数的个数:%d\n", count); } 题目:计算1~100中所有3的倍数的

C#计算表达式(仿计算器功能)

一.用MSScriptControl在C#中执行JavaScript代码javascript中有个eval方法用过的人都知道他的方便和强大之处.在C#中,我们也可以通过Com组件来执行一段javascript代码.下面的代码展示了如何用MSScriptControl 组件执行一段数学表达式: MSScriptControl.ScriptControlClass sc = new MSScriptControl.ScriptControlClass(); sc.Language = "javasc