Problem Description

ZZ自从上大学以来,脑容量就是以SB计算的,这个吃货竟然连算术运算也不会了,可是当今的计算机可是非常强大的,作为ACMer, 几个简单的算术又算得了什么呢?可是该怎么做呢?ZZ只想算简单的加减乘除,由于大脑钝化,ZZ连小数都没有概念了!

Input

有多组测试数据,每组测试数据为一个字符串,字符串为合法的算术运算,运算符号只包含+、-、*、/,数据为整数.

Output

请输出正确的结果,除数为0的时候,输出impossible。(结果保证在长整形之内)

Sample Input

1+1*2
2/2+1

Sample Output

3
2
 #include<stdio.h>
#include<string.h>
#define LL long long int main()
{
LL d[] , temp , cnt;
LL i , j;
char ch[];
while(gets(ch))
{
cnt=temp=;
for(j= ; j<strlen(ch) ; j++)
{
if(ch[j]>=''&&ch[j]<='') temp = temp*+ch[j]-'';
else break;
}
d[cnt++]=temp;
for(i=j ; i<strlen(ch) ; i++)
{
temp=;
for(j=i+ ; ch[j]>=''&&ch[j]<='' ; j++) temp = temp*+ch[j]-'';
if(ch[i]=='*') d[cnt-] *= temp;
else if(ch[i]=='/') d[cnt-] /= temp;
else if(ch[i]=='+') d[cnt++] = temp;
else d[cnt++] = (-)*temp;
i=j-;
}
for(i= ; i<cnt ; i++) d[]+=d[i];
printf("%I64d\n",d[]);
}
return ;
}

数组模拟

 #include <stdio.h>
#include <string.h>
#include <stack>
using namespace std; stack<long long> stk;
stack<char> op; int main()
{
char str[];
bool bl ;
int len, i, j, k;
long long a, b;
while (scanf("%s",str)!=EOF)
{
bl = true;
while (!stk.empty()) stk.pop();
while (!op.empty()) op.pop();
i = ;
if (str[] == '-') i++;
len = strlen(str);
for(; i<len; i++)
{
a = str[i++]-'';
while(i < len && str[i] >='' && str[i] <='')
{
a *= ;
a += str[i++] -'';
}
if (!op.empty())
{
if (op.top() == '*')
{
b = stk.top();
stk.pop();
a *=b;
op.pop();
}
else if (op.top() == '/')
{
b = stk.top();
stk.pop();
if (a == )
{
puts("impossible");
bl = false;
break;
}
a = b / a;
op.pop();
}
}
stk.push(a);
if (i < len) op.push(str[i]);
}
if (!bl) continue;
long long sum=;
while (!op.empty())
{
a = stk.top();
stk.pop();
if (op.top() == '+')
{
sum += a;
op.pop();
}
else
{
sum -= a;
op.pop();
}
} if (str[] == '-') sum -= stk.top();
else sum += stk.top();
printf("%I64d\n", sum); }
return ;
}

两个栈模拟

ZZ的计算器的更多相关文章

  1. CSUST 1506 ZZ的计算器 模拟题

    题目描述:实现一个计算器,可以进行任意步的整数以内的加减乘除运算,运算符号只有+.-.*./,求出结果. 解题报告:一个可以说麻烦的模拟题,我们可以这样,输入以字符串的形式输入,然后将输入先做一遍预处 ...

  2. Java计算器1.0版

    此版本只是设计了页面,还没有实现事件监听   代码: package com.niit.javagui; import java.awt.Button; import java.awt.FlowLay ...

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

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

  4. 自己动手写计算器v1.1

    这个改动主要是使用工厂模式替代了简单工厂模式,这样做的好处是如果以后我们要扩充其他运算时,就不用总是去修改工厂类, 这是可以采取工厂模式,主要是将原来简单工厂类的逻辑判断分离出来,将它作为一个借口,与 ...

  5. 自己动手写计算器v1.0

    今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...

  6. 【IOS开发笔记03-视图相关】简单计算器的实现

    UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...

  7. [LeetCode] Basic Calculator 基本计算器

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  8. JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...

  9. 由ArcMap属性字段自增引出字段计算器使用Python的技巧

    1.前言       前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQL Server中对于数值型字段可以设置自增.所以我打开ArcCatalog查看发现只提供默认值 ...

随机推荐

  1. 基于stm32f103zet6的FAT16文件系统学习1(初识FAT16)

    有了之前读写block的基础之后,准备弄个文件系统,之前没有接触过这东西,所以有很多都晕晕的,但是看到fat的源代码之后还是挺有信心的,因为之前一直过uboot,所以这个文件当然是小巫见大巫了.首先来 ...

  2. code 代码分析 及其解决方案

    官网地址:http://msdn.microsoft.com/zh-cn/library/ms182135.aspx [FxCop.设计规则]11. 不应该使用默认参数 参考地址:http://blo ...

  3. 《Java web 开发实战经典》读书笔记

    去年年末,也就是大四上学期快要结束的时候,当时保研的事情确定了下来,终于有了一些空闲的时间可以学点实用的技术. 之前做数据库课程设计的时候,也接触过java web的知识,当时做了一个卖二手书籍的网站 ...

  4. 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词

    一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...

  5. hdu 3061 (最大权闭合图)

    分析:城池之间有依赖关系,汇点与能获得兵力的城池连接,容量为可以获得的兵力,损耗兵力的城池与汇点连接容量为损耗的兵力,有依赖关系的城池间连边,容量为无穷大,跑网络流求出的最小割就是损耗的最小兵力,,, ...

  6. 【巧妙算法系列】【UVA 11384】 Help is needed for Dexter 正整数序列

    Help is needed for Dexter Time Limit: 3 Second Dexter is tired of Dee Dee. So he decided to keep Dee ...

  7. vmware tools 安装

    转到虚拟机 > 安装 VMware Tools(或 VM > 安装 VMware Tools).注意:如果您运行的是轻量版的 Fusion.不带 VMware Tools 的 Workst ...

  8. MySql5.1在Win7下的安装与重装问题的解决

    痛苦啊痛苦,我也不知道这两天怎么了.上班没有精神,还打瞌睡,下班后又感觉很累.精力集中不起来. 这篇花了我好久的时间,我效率这么差,~\(≧▽≦)/~. 软件包下载 首先单击mysql-5.1.53- ...

  9. 实现接口IDisposable的示例

    想使用using(...), 如: using (Getter process = new Getter()) { //... } 就必须给类实现接口IDisposable public sealed ...

  10. RDLC报表系列(一) 简单的动态数据绑定和配置

    RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置  RDLC报表系列(二) 行分组 RDLC报表系列(三) 总计和折叠 RDLC报表系列(四) 矩阵 RDLC报表系列(五) 简单的图 ...