HDU_1237_简单计算器
运算符为+,-,*,/;操作数为整数;且没有括号
设定符号优先级,先在栈底压运算符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.C#WinForm基础制作简单计算器
利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
- PAT 06-1 简单计算器
想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...
- php大力力 [005节] php大力力简单计算器001
2015-08-22 php大力力005. php大力力简单计算器001: 上网看视频,看了半天,敲击代码,如下: <html> <head> <title>简单计 ...
- PHP实现简单计算器
<!--简单的计算器--> <!DOCTYPE html> <html> <head> <title>PHP实现简单计算器</titl ...
- c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;
网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...
- JavaWeb学习记录(二十)——Model1模式(javaBean+jsp)实现简单计算器案例
¨JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为: ¨<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件. ¨< ...
- 一个用WPF做的简单计算器源代码
一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...
- hdu 1237 简单计算器
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单计算器 Description 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...
随机推荐
- HttpServlet容器响应Web客户流程
HttpServlet容器响应Web客户请求流程如下: 1)Web客户向Servlet容器发出Http请求: 2)Servlet容器解析Web客户的Http请求: 3)Servlet容器创建一个Htt ...
- Java反射的基本应用
反射机制,程序在运行时加载新的类,使程序更加灵活 public class HelooReflect { public static void main(String[] args) { // 获取类 ...
- Maven运行测试
原文:http://tianya23.blog.51cto.com/1081650/292315/ Maven运行用于测试中的最佳实践(个人认为,呵呵) 1.创建maven工程 mvn arche ...
- CodeForces-451E:Devu and Flowers (母函数+组合数+Lucas定理)
Devu wants to decorate his garden with flowers. He has purchased n boxes, where the i-th box contain ...
- HTML标签防XSS攻击过滤模块--待优化
HTML标签防XSS攻击过滤模块 http://cnodejs.org/topic/5058962f8ea56b5e7806b2a3
- Linux后门入侵检测工具,附bash漏洞解决方法
一.rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现 ...
- rm -rf 的“幸存者”
原文:http://blog.jobbole.com/70971/ 以 root 用户执行 rm –rf / 命令,然后观察下哪些文件或者指令会幸存下来.结果是什么也没少!因此你必须增加 —no-pr ...
- Android buffer_handle_t的定义(转载)
转自:http://www.cnblogs.com/eustoma/archive/2012/06/08/2541416.html 1. buffer_handle_t 文件位置:system\cor ...
- E201700525-hm
skeleton n. 骨骼; (建筑物等的) 骨架; 梗概; 骨瘦如柴的人(或动物);adj. 骨骼的; 骨瘦如柴的; 概略的; 基本的; cloud n. 云; 云状物; invoke ...
- 用jdbc连接数据库并简单执行SQL语句
一:版本一.这种存在一个问题就是每执行一次操作都会创建一次Connection链接和且释放一次链接 1:创建pojo对象(OR映射,一个pojo类对应一张数据库表) package com.yin ...