识别浮点常量问题

来源:互联网 发布:软件开发公司上市资质 编辑:程序博客网 时间:2024/06/05 19:09

#点击阅读原题#

#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;}


原创粉丝点击