uva 325 Identifying Legal Pascal Real Constants
来源:互联网 发布:数据库系统实现 ppt 编辑:程序博客网 时间:2024/06/07 03:01
题目:一个简单的格式分析程序。浮点数的组成规则已知。求是不是正确的数字。有限自动机。
注意:有些情况如没有e的情况,不要忘了考虑
#include <cstdio>#include <string.h>#include <cstdlib>#include <cmath>#include <ctgmath>#include <iostream>#include <vector>#include <algorithm>using namespace std;//理解有限状态机/* pre_num 数分析前状态 sign1 数值部分符号 pre_point 数值部分小数点前 point 小数点 fraction 数值部分小数点后 e 指数符号 sign2 指数部分符号 exp 指数部分的的指数状态 followblack 常数后的空格 error 错误*///cin进行字符变量输入,自动过滤头部空格int main(){enum Status{pre_num,sign1,pre_point,point,fraction,e,sign2,exp,error};char m;char str[1000];//存读入的数字Status state;while(cin >> str && strcmp(str, "*")!=0){int i = 0;m = str[i];state = pre_num;while (m != '\0') {switch (state) {case pre_num: if(m=='+' || m=='-'){state = sign1;break;} else if(m>='0' && m<='9'){state = pre_point;break;} else {state = error;break;}case sign1: if(m>='0' && m<='9'){state = pre_point;break;} else {state = error;break;}case pre_point:if(m=='.'){state = point;break;} if(m=='e' || m=='E'){state = e;break;}//不一定是小数的情况 if(m>='0' && m<='9'){state = pre_point;break;}//123.1情况 else state = error;break;case point: if(m>='0' && m<='9'){state = fraction;break;} else state = error;break;case fraction: if(m>='0' && m<='9'){state = fraction;break;} else if(m=='e' || m=='E'){state = e;break;} else state = error; break; case e: if(m=='+' || m=='-'){state = sign2;break;} else if(m>='0' && m<='9'){state = exp;break;} else state = error;break; case sign2: if(m>='0' && m<='9'){state = exp;break;} else state = error;break;case exp: if(m>='0' && m<='9'){state = exp;break;} else state = error;break;case error: goto lable;}m = str[++i];}lable:if (state == error) {printf("%s is illegal.\n",str);}else if(state == fraction || state == exp) printf("%s is legal.\n",str);else printf("%s is illegal.\n",str);}return 0;}
0 0
- UVa 325 - Identifying Legal Pascal Real Constants
- uva 325 Identifying Legal Pascal Real Constants
- acm.jlu.edu.cn-1552-Identifying Legal Pascal Real Constants
- UVA_325_Identifying Legal Pascal Real Constants
- Real Programmers Use Pascal
- constants
- Constants
- Identifying Keywords
- IDENTIFYING AND NON-IDENTIFYING RELATIONSHIPS
- Identifying and non-identifying relationships
- UVa 485 - Pascal's Triangle of Death
- uva 485 Pascal's Triangle of Death
- Java constants
- 17.3 Constants
- 17.3 Constants
- C++ constants
- TAAL3 Constants
- literal constants
- zzuli 2131: Can Win(最大流 公平分配)@
- unity wav 格式音频转 写入本地
- StringBuilder、StringBuffer和String三者的联系和区别
- 你真的了解JAVA中的main方法吗?
- Appium+python实现App自动化登录
- uva 325 Identifying Legal Pascal Real Constants
- Python入门之循环分支
- 图像处理、计算机视觉、算法相关资源
- 文件系统使用总结
- C++常见内存错误汇总
- Controlling Object Visibility and Editability in Unity Using HideFlags
- vb.net 教程 3-2 窗体编程之窗体 4
- java-记录一个子串在整串中出现的次数
- C++ STL常用容器删除操作注意事項