运算符为+,-,*,/;操作数为整数;且没有括号

设定符号优先级,先在栈底压运算符0

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std; stack<int> op;
stack<double> num; char input[]; bool prio[][]=
{
,,,,, //
,,,,, //+
,,,,, //-
,,,,, //*
,,,,, //,/
}; void getNext(bool &isOp,int &opNum,int &loc)
{
if(''<=input[loc]&&input[loc]<='')
{
int tmp=;
while(input[loc]!=' '&&input[loc]!=)
{
tmp*=;
tmp+=input[loc]-'';
loc++;
}
isOp=;
opNum=tmp;
if(input[loc]!=)
loc++;
}
else
{
isOp=;
if(input[loc]==)
opNum=;
else if(input[loc]=='+')
opNum=;
else if(input[loc]=='-')
opNum=;
else if(input[loc]=='*')
opNum=;
else
opNum=;
loc+=;
}
} int main()
{
while(gets(input))
{
while(!op.empty())
op.pop();
while(!num.empty())
num.pop();
if(strlen(input)==&&input[]=='')
break;
bool isOp=;
int opNum=,loc=;
op.push();
while(loc<=strlen(input))
{
getNext(isOp,opNum,loc);
if(isOp==)
num.push(opNum);
else
{
int opTop=op.top();
if(prio[opNum][opTop]==)
op.push(opNum);
else
{
while(prio[opNum][opTop]==) //这个地方之前出错,当当前运算符优先级比栈顶元素低,应该一直计算至栈顶元素优先级低于当前元素优先级
{
double num2=num.top();
num.pop();
double num1=num.top();
num.pop();
int nowOp=op.top();
op.pop();
opTop=op.top();
if(nowOp==)
num.push(num1+num2);
else if(nowOp==)
num.push(num1-num2);
else if(nowOp==)
num.push(num1*num2);
else if(nowOp==)
num.push(num1/num2);
}
op.push(opNum);
}
}
}
printf("%.2f\n",num.top());
}
return ;
}

HDU_1237_简单计算器的更多相关文章

  1. 1.C#WinForm基础制作简单计算器

    利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...

  2. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  3. PAT 06-1 简单计算器

    想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...

  4. php大力力 [005节] php大力力简单计算器001

    2015-08-22 php大力力005. php大力力简单计算器001: 上网看视频,看了半天,敲击代码,如下: <html> <head> <title>简单计 ...

  5. PHP实现简单计算器

    <!--简单的计算器--> <!DOCTYPE html> <html> <head> <title>PHP实现简单计算器</titl ...

  6. c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;

    网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...

  7. JavaWeb学习记录(二十)——Model1模式(javaBean+jsp)实现简单计算器案例

    ¨JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为: ¨<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件. ¨< ...

  8. 一个用WPF做的简单计算器源代码

    一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...

  9. hdu 1237 简单计算器

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单计算器 Description 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...

随机推荐

  1. 实践001:char 类型字段在表中的长度

    Rainy on 20170215 1.同事在 写RFC的时候遇到报错:"YTST_001" 必须为扁平结构.不能将内部表.字符# 原因是自建结构中字段定义为了string 类型. ...

  2. HDU1045 Fire Net —— 二分图最大匹配

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit: 2000/1000 MS (Java/Others)  ...

  3. java修改linux文件

    package vedio.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fil ...

  4. 《Visual C++ 2010入门教程》系列三:关于C++的一些问题

    <Visual C++ 2010入门教程>系列三:关于C++的一些问题   这一回我自己都不知道应该写点什么好,或许今天的篇幅会比往常短很多.我说过,这不是C++的教程,因为我还没有那个能 ...

  5. 使用C#开发HTTP服务器系列之Hello World

    各位朋友大家好,我是秦元培,欢迎大家关注我的博客.从今天起,我将开始撰写一组关于HTTP服务器开发的系列文章.我为什么会有这样的想法呢?因为人们对Web技术存在误解,认为网站开发是Web技术的全部.其 ...

  6. 1.import和include区别 2.NSLog 和printf区别 3.创建对象做的事情 4. 类和对象方法比较 5 匿名对象优缺点 6. 封装 7.作用域范围 8.id和instancetype 9.自定义构造方法规范 10.nil和Nil及NULL、NSNull区别

    1.import和include的区别: import可以防止头文件的重复包含 2.NSLog 和printf的区别: 1,NSLog可以自动换行, 输出调试信息, printf不能. 2,NSLog ...

  7. [USACO 2004DEC] Navigation Nightmare

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3362 [算法] 带权并查集 时间复杂度 : O(NlogN) [代码] #inclu ...

  8. hdu4815 概率问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4815 好久没写dp了..最开始题意都理解错了, 哎!!我现在很饿也很困!! AC代码: #includ ...

  9. hdu 1071 The area【定积分】

    用顶点式\( a(x-h)^2+k=y \)解方程,转化为\(ax^2+bx+c=y \)的形式,然后对二次函数求定积分\( \frac{ax^3}{3}+\frac{bx^2}{2}+cx+C \) ...

  10. ionic2 中隐藏子页面tabs选项卡的三种方法

    第一种: 隐藏全部子页面的tabs选项界面 找到app.module.ts文件 ,修改如下代码 imports: [ IonicModule.forRoot(MyApp,{ tabsHideOnSub ...