ZZ的计算器
Problem Description
Input
Output
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的计算器的更多相关文章
- CSUST 1506 ZZ的计算器 模拟题
题目描述:实现一个计算器,可以进行任意步的整数以内的加减乘除运算,运算符号只有+.-.*./,求出结果. 解题报告:一个可以说麻烦的模拟题,我们可以这样,输入以字符串的形式输入,然后将输入先做一遍预处 ...
- Java计算器1.0版
此版本只是设计了页面,还没有实现事件监听 代码: package com.niit.javagui; import java.awt.Button; import java.awt.FlowLay ...
- 1.C#WinForm基础制作简单计算器
利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...
- 自己动手写计算器v1.1
这个改动主要是使用工厂模式替代了简单工厂模式,这样做的好处是如果以后我们要扩充其他运算时,就不用总是去修改工厂类, 这是可以采取工厂模式,主要是将原来简单工厂类的逻辑判断分离出来,将它作为一个借口,与 ...
- 自己动手写计算器v1.0
今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...
- 【IOS开发笔记03-视图相关】简单计算器的实现
UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...
- [LeetCode] Basic Calculator 基本计算器
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...
- 由ArcMap属性字段自增引出字段计算器使用Python的技巧
1.前言 前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQL Server中对于数值型字段可以设置自增.所以我打开ArcCatalog查看发现只提供默认值 ...
随机推荐
- poj 1129 Channel Allocation
http://poj.org/problem?id=1129 import java.util.*; import java.math.*; public class Main { public st ...
- USB系列之九:基于ASPI的U盘驱动程序
USB系列之七和之八介绍了ASPI,并通过一些实例说明了基于ASPI的编程方法,本文使用前两篇文章介绍的知识以及以前介绍的有关DOS驱动程序下驱动程序的内容实际完成一个简单的基于ASPI的U盘驱动程序 ...
- Apache Commons Pool2 源码分析 | Apache Commons Pool2 Source Code Analysis
Apache Commons Pool实现了对象池的功能.定义了对象的生成.销毁.激活.钝化等操作及其状态转换,并提供几个默认的对象池实现.在讲述其实现原理前,先提一下其中有几个重要的对象: Pool ...
- bootstrap绿色大气后台模板下载[转]
From:http://www.oschina.net/code/snippet_2364127_48176 1. [图片] 2. [文件] 素材火官网后台模板下载.rar ~ 4MB 下载( ...
- UVA 11045-My T-shirt suits me(二分图匹配)
题意:有N件T恤,N是6的倍数,因为有6种型号,每种件数相同,有M个人,每个人有两种型号的T恤适合他,每个人可以挑其中的一种,问能否所有的人都能分配到T恤. 解析:典型的二分图匹配,每N/6为同种T恤 ...
- Hibernate框架(一)——总体介绍
作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的 ...
- Hibernate中save、saveorupdate、persist方法的区别
在Hibernate中,save().saveOrUpdate()和persist()都是用于将对象保存到数据库中的方法,但其中有些细微的差别.例如,save()只能INSERT记录,但是saveOr ...
- Red and Black(简单dfs)
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- J2EE之ANT
Ant是一种基于Java的build工具.由一些内置任务组成.这些任务用于编译和运行java应用.创建文档.文件和文件夹的操作. 理论上来说.它有些类似于(Unix)C中的make ,但没有make的 ...
- ios应用view之间数据传递的方式
对于不同的viewcontroller之间数据的共享和处理 采用代理的方式,子viewcontroller设计代理协议,并定义协议接口,父viewcontroller实现协议接口,实现子视图控制器退出 ...