博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【经典算法】:用字符串模拟计算器的生成
阅读量:3706 次
发布时间:2019-05-21

本文共 926 字,大约阅读时间需要 3 分钟。

前言

一般的制作计算器都会比较不智能,会有很严格的输入格式

在这里,我做了一个简化,使的即使没有严格地输入输出格式,也能够达到计算器的效果

比如说:下面这些例子

这里写图片描述

这里就是用字符串读入了一行,然后对字符串进行处理,得到了最后结果,那么是如何做到的呢?

思路

读入一行之后,前面有部分全是数字,这样他就为操作数1,后面有部分全为数字,这样就是操作数2

中间有符号为+ - * / 之一,这样也能把它存起来

这样就能达到分离数据的目的,然后把分离出来的数据还原,最后做加减运算即可

代码

//  count1保存操作数1的长度,count2保存操作数2的长度,sum1保存操作数1的值,sum2保存操作数2的值#include 
using namespace std;int num1[10],num2[10]; //保存操作数1和操作数2char temp; //保存运算符void main(){ int pos,count1=0,count2=0,sum1=0,sum2=0; char s[100]; cin.getline(s,100); //读入一行 for(int i=0;i<100;i++){ if(s[i]>='0' && s[i]<='9'){ num1[count1++] = s[i]-'0'; //获得操作数1 } if(s[i]=='+' ||s[i]=='-' ||s[i]=='*'||s[i]=='/'){ temp=s[i]; //获得运算符 pos = i; //pos保存下标 break; } } for(i=pos+1;i<100;i++){ if(s[i]>='0' &&s[i]<='9'){ num2[count2++] = s[i]-'0'; //获得操作数2 } } for(i=0;i

成果展示

这里写图片描述

你可能感兴趣的文章
LeetCode中经典的排序问题
查看>>
拓扑排序
查看>>
LeetCode中典型的DFS问题
查看>>
MySQL事务和隔离级别
查看>>
LeetCode中有关哈希表问题
查看>>
计算机网络学习笔记
查看>>
完美代价(贪心算法)
查看>>
矩阵乘法
查看>>
时间转化·
查看>>
二进制数数
查看>>
蓝桥杯大小写转换
查看>>
字符串合并
查看>>
贪心算法
查看>>
斐波那契数列
查看>>
java蓝桥杯2017年A组
查看>>
编写代码与初步运行
查看>>
汇编语言之debug篇
查看>>
随机行走
查看>>
树与二叉树
查看>>
荷兰国旗问题
查看>>