您的位置:首页 > 其它

csu oj 1031 Real Numbers(模拟)

2014-10-04 15:52 399 查看
csu oj 1031 Parsing Real Numbers

思路:判断一个数是不是实数!

#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <stack>
#include <cmath>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
#define LL long long
#define M 1003
#define INF 1<<28
#define CLS(x,v) memset(x,v,sizeof(x))

char s[M];
int check(int len)
{
for(int i=0;i<len;i++)
if(s[i]=='e'||s[i]=='E')return i;
return -1;
}
int checkLeft(int mid)
{
int i=0,cntp=0;
if(s[i]=='+'||s[i]=='-')i++;
if(s[i]=='.'){i++;cntp++;}
if(i==mid)return 0;
for(;i<mid;i++)
{
if(s[i]=='.')
{
if(cntp>0)return 0;
cntp++;
}else if(s[i]<'0'||s[i]>'9')
return 0;
}
return 1;
}
int checkRight(int j,int len)
{
if(s[j]=='+'||s[j]=='-')j++;
if(j==len)return 0;
for(int i=j;i<len;i++)
if(s[i]<'0'||s[i]>'9')
return 0;
return 1;
}
int main()
{
int T,len,mid;
scanf("%d",&T);
getchar();
while(T--)
{
gets(s);
len=strlen(s);
mid=check(len);
if(mid==-1)
{
printf("%s\n",checkLeft(len)?"YES":"NO");continue;
}else
{
if(checkLeft(mid)==0)printf("NO\n");
else if(checkRight(mid+1,len)==0)printf("NO\n");
else printf("YES\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: