#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int getnext(int x,char c) //依上图判断各种情况
{
switch(x)
{
case 1:
if(isdigit(c)) return 2;
if(c=='-'||c=='+') return 3;
return -1;
case 2:
if(isdigit(c)) return 2;
if(c=='.') return 4;
if(c=='e'||c=='E') return 5;
return -1;
case 3:
if(isdigit(c)) return 2;
return -1;
case 4:
if(isdigit(c)) return 6;
return -1;
case 5:
if(isdigit(c)) return 7;
if(c=='-'||c=='+') return 8;
return -1;
case 6:
if(c=='e'||c=='E') return 5;
if(c=='\0') return 0;
if(isdigit(c)) return 6;
return -1;
case 7:
if(c=='\0') return 0;
if(isdigit(c)) return 7;
return -1;
case 8:
if(isdigit(c)) return 7;
return -1;
}
}
int main()
{
string s;
getline(cin,s);
//去除字符串两边的空格
s.erase(0,s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ")+1);
int state=1;
for(int i=0;i<=s.length();i++){ //要判断终结符
state=getnext(state,s[i]);
if(state==-1) break;
}
printf("%s\n",state==0?"YES":"NO");
return 0;
}
识别浮点常量问题
最新推荐文章于 2021-09-25 18:10:33 发布