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查看发现只提供默认值 ...
随机推荐
- Word Search 解答
Question Given a 2D board and a word, find if the word exists in the grid. The word can be construct ...
- 关于xhEditor
关于xhEditor xhEditor是一个基于jQuery开发的简单迷你并且高效的在线可视化HTML编辑器,基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chr ...
- Unity 集成联通SDK
我相信Unity程序员都会遇到加入SDK的问题,我相信如果你不会android编程,我相信你的CPU当场计算过快而爆炸! 这里也写笔记希望能帮助大家 如果有讲错的地方,希望大家能回复并且提供答案! ...
- jackson的简单使用(可转xml)
参考文章:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html (原文章更详细哦,且有介绍xml与java对象的互转) 参考文章作 ...
- JAXB
注解
JAXB(Java API for XML Binding),它提供了一个便捷的方式高速Java对象XML转变.于JAX-WS(Java的WebService规范之中的一个)中,JDK1.6 自带的版 ...
- 有关Oracle cvu和cvuqdisk
有关Oracle cvu和cvuqdisk cvu的下载链接: http://www.oracle.com/technetwork/products/clustering/downloads/cvu- ...
- Ubuntu下嵌入式Qt开发环境配置全攻略
http://qpcwth.blog.163.com/blog/static/20993024620139151424822/ 在安装的过称中,出现一些问题,注意试想: 1.本次开发环境的配置,是基于 ...
- 有关docker新版的icc、iptables的一个巨坑
之前玩过docker的icc=false.iptables=true 按照这两个参数配置之后,想指定两个特定的容器通讯,直接用--link即可. 但最近我在下载了1.12新版的docker,这个不奏效 ...
- Oracle SQL函数之日期函数
sysdate [功能]:返回当前日期. [参数]:没有参数,没有括号 [返回]:日期 SQL> SELECT SYSDATE FROM DUAL; SYSDATE ----------- // ...
- C#自定义控件在添加引用后不显示在工具箱的解决方法
先说一些背景: 在开发C#项目时,发现很多控件存在复用的情况,控件的属性都是要设置成一样的,我就想,能不能设置一个类来存放这个控件,这样我每次用的时候直接加一些特殊的操作就可以了,不需要再次设置控件属 ...