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查看发现只提供默认值 ...
随机推荐
- bootstrap绿色大气后台模板下载[转]
From:http://www.oschina.net/code/snippet_2364127_48176 1. [图片] 2. [文件] 素材火官网后台模板下载.rar ~ 4MB 下载( ...
- curl 浏览器模拟请求实战
1,curl 常用选项
- django 启动和请求
Django运行方式 调试模式 直接 python manage.py runserver python manage.py runserver python manage.py runserver ...
- jdk7 中Collections.sort 异常
Collections.sort 异常 java.lang.IllegalArgumentException: Comparison method violates its general contr ...
- AngularJS 的一些坑
UI的闪烁 Angular的自动数据绑定功能是亮点,然而,他的另一面是:在Angular初始化之前,页面中可能会给用户呈现出没有解析的表达式.当DOM准备就绪,Angular计算并替换相应的值.这样就 ...
- error: ‘for’ loop initial declarations are only allowed in
使用gcc,出现如下错误: thread_join.c:7:5: error: 'for' loop initial declarations are only allowed in C99 mode ...
- JDBC插入百万数据,不到5秒!
java自带的批量操作,就可以很好的支持大量数据的处理.相比c#,简单很多.c#要使用oracle提供的ODP.NET,效率才很高,但是代码却很复杂.总之,在这方面,c#没得比.当然,这里的表是没加索 ...
- 76 bytes for faster jQuery
转载自http://james.padolsey.com/javascript/76-bytes-for-faster-jquery/ 作者JAMES PADOLSEY 在我们平时使用JQuery,调 ...
- 禁掉a链接的几种方法
这次遇到链接 先留着 但不能有任何作用的需求 ,我只能说顾客的需求真是多种多样,奇奇怪怪啊 啊啊啊啊啊啊啊啊啊啊啊 我用span代替了a 标签,但是后来想想维护起来可能不太方便 所以上网查资料, ...
- Unity IOC注入详细配置(MVC,WebApi)
一直想写一篇关于unity 详细的配置信息的文章,也算是自我总结吧 先介绍了unity , Unity是微软官方推荐使用的轻型的IOC框架,支持各种方式的注入 ,使用来解耦的利器. 获取unity 的 ...