一个四则运算的小小计算器
来源:互联网 发布:淘宝买东西如何开发票 编辑:程序博客网 时间:2024/05/29 09:03
// 一个四则运算的小小计算器
// 陆陆续续解决了 小数 空格 括号 的问题
// 之后准备添加错误检测
// 还准备把三个函数合起来
// 再添加其他运算符
// 基本思路是嵌套
// 注释很乱,所以我暂时删掉了,见谅
// 想要注释的小伙伴可以找我
// 有bug的话请务必告诉我
#include <stdio.h>#define MAX_STR 10000char *highofstr(char *low){ while(*low!='\0') low++; return low-1;}double trans(char *low, char *high){ double num=0; int cnt_point=-1; while(low<=high) { if( *low=='.' || cnt_point>-1 ) cnt_point++; if( *low!='.' ) num= 10*num+((*low)-'0'); low++; } for( ; cnt_point>0; cnt_point--) num /=10; return num;}int flagch(char ch){ if('0'<=ch && ch<='9')return 9; if(ch=='.')return 9; if(ch=='+' || ch=='-')return 1; if(ch=='*' || ch=='/')return 2; if(ch=='(' || ch==')')return 9; return -1;}double deal_1(char *low, char *high){ double deal_2(char *low, char *high); int cnt_kh=0; char *p=high; while( (flagch(*p)!=1 && p>low) || (cnt_kh!=0) ) { if(*p=='(')cnt_kh++; if(*p==')')cnt_kh--; p--; } if(p<=low) return deal_2(low, high); else if(*p=='+') return deal_1(low, p-1)+deal_2(p+1, high); else if(*p=='-') return deal_1(low, p-1)-deal_2(p+1, high);}double deal_2(char *low, char *high){ double deal_9(char *low, char *high); int cnt_kh=0; char *p=high; while( (flagch(*p)!=2 && p>low) || (cnt_kh!=0) ) { if(*p=='(')cnt_kh++; if(*p==')')cnt_kh--; p--; } if(p<=low) return deal_9(low, high); else if(*p=='*') return deal_2(low, p-1)*deal_9(p+1, high); else if(*p=='/') return deal_2(low, p-1)/deal_9(p+1, high);}double deal_9(char *low, char *high){ double deal_1(char *low, char *high); if( *low!='(' ) return trans(low, high); else return deal_1(low+1, high-1);}int true_cnt_point(double num){ if( num-(int)num==0 )return 0; return 1+true_cnt_point(num*10);}void Enterstr(char *str){ for(int i=0; i<MAX_STR; i++) { scanf("%c", str); if(*str=='\n')break; if(*str!=' ')str++; } *str='\0';}int main(){ char str[MAX_STR+1]; while(1) { Enterstr(str); printf("%.10f\n", deal_1(str, highofstr(str))); } return 0;}
阅读全文
0 0
- 一个四则运算的小小计算器
- 一个小小的计算器
- 一个简单的四则运算计算器
- C#实现的一个小小计算器
- 一个小小计算器
- 控制台的四则运算计算器
- 简单的四则运算计算器
- 简单的四则运算计算器
- 学习C++的成果,一个简单的四则运算计算器内核
- 利用栈写的一个支持四则运算的计算器
- Redy语法分析--一个简单的四则运算计算器
- 使命栈(stack)实现一个简易的四则运算计算器
- MFC创建一个实现四则运算而且有优先级的计算器
- 对于c++来说,最简单的就是四则运算了,这里有一个四则运算的计算器
- 简单的web四则运算计算器
- 栈 实现四则运算的计算器
- 基于状态机的四则运算计算器
- android—小小的计算器
- 保存数据——显示日期
- SpringMVC返回json数据完整配置如下。
- http://ttaa.210997.com之后跳转https://hao.360.cn/?src=lm&ls=n5334812d99解决办法
- Heroku Paas创建PHP应用
- Spring MVC_3
- 一个四则运算的小小计算器
- 处理JavaScript异常的正确姿势
- 使用axis2解析wsdl生成Webservice客户端代码
- 关于python文件操作
- oracle 数据导出 备注(comment)乱码问题解决办法
- 三值排序
- Free Pascal介绍
- mybatis
- spring中切入点表达式