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;
}
思路:判断一个数是不是实数!
#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;
}
相关文章推荐
- csu 1031 Parsing Real Numbers
- 哈理工OJ 1031 _OOOO_ Problem(简单模拟问题)
- 【九度OJ】1031【模拟】【C实现】【浙大2009】
- csu oj K swap operation 模拟
- CSUOJ 1005 Binary Search Tree analog(二叉搜索树模拟)
- 【开发板技术支持】关于real6410 模拟摄像头与real6410 开发板的接线方式图
- 2017湖南省多校第一场解题报告(CSU OJ)
- CSU1977-Bit-reversal Permutation-模拟
- 【模拟】洛谷 P1467 循环数 Runaround Numbers
- CSU 1765 简单shell 模拟
- 【九度OJ】1010【模拟】
- java爬虫step2--模拟登陆和提交--oj代码自动提交
- 【九度OJ】1013【模拟】
- CSU 1339 最后一滴血 (简单模拟)
- HDU-1479-Numbers That Count(模拟)
- ztr loves lucky numbers 傻逼的我来了个大模拟
- CSU1021-组合数末尾的零-打表、模拟
- PAT 1023. Have Fun with Numbers (20) 模拟大数乘法
- P1467 循环数 Runaround Numbers(模拟)
- CSUOJ:K swap operation