变量名检查
来源:互联网 发布:pua倪网络课程百度云 编辑:程序博客网 时间:2024/05/01 11:01
FJNU.1762
Description
给定若干个double类型变量的声明语句,要求从中分离出变量名,并按是否有重定义,分成两部分,按字典序输出
Input
若干行double类型变量的声明语句(每行的字符数不超过128)
Output
首先按字典序输出未重定义的变量名,每行一个
其次按字典序输出产生重定义的变量名,每行除了输出变量名外,还要输出变量名在整个声明语句中出现的次数
Sample Input
double a,b,c,aa,ab=0,ac_a2; double A[256]={1,2,5},B[1024][1024]={0},*C;
double aa , Aa, _a; double aa,aa; double b;
double *ac;
Sample Output
A
Aa
B
C
_a
a
ab
ac
ac_a2
c
aa 4
b 2
Hint
在所有测试数据中,没有Simple Input中不包含的情况,
例如,不需要考虑double a=1.0+2.0*3此类情况
即分隔符集为 ,={}[]* .;
Source
Piao@FNOJ
My Program
#include<string>
#include<map>
#include<algorithm>
using namespace std;
int main()
...{
map<string,int> var;
char str[130],*a;
int i,n;
bool flag;
while(scanf("%s",str)!=EOF)
...{
a=strtok(str,",={}[]* .;");
while(a)
...{
flag=false;
n=strlen(a);
for(i=0;i<n;i++)
if(a[i]<'0'||a[i]>'9')
...{
flag=true;
break;
}
if(strcmp(a,"double")&&flag)
var[string(a)]++;
a=strtok(NULL,",={}[]* .;");
}
}
map<string,int>::iterator iter;
for(iter=var.begin();iter!=var.end();iter++)
if(iter->second==1)
cout<<iter->first<<endl;
for(iter=var.begin();iter!=var.end();iter++)
if(iter->second>1)
cout<<iter->first<<" "<<iter->second<<endl;
return 0;
}
YOYO's Note:
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄它是华丽的分隔线
【题意简述】
给定若干个double类型变量的声明语句,要求从中分离出变量名,并按是否有重定义,分成两部分,按字典序输出
【粗略分析】
可以用map记录该变量名访问的次数,
接着先将次数为1的输出,
然后将>1的输出,
map默认是按字典排序,增好~
【C++源代码】
#include<string>
#include<map>
#include<algorithm>
using namespace std;
int main()
...{
map<string,int> var;
char str[130],*a;
int i,n;
bool flag;
while(scanf("%s",str)!=EOF)
...{
a=strtok(str,",={}[]* .;");
while(a)
...{
flag=false;
n=strlen(a);
for(i=0;i<n;i++)
if(a[i]<'0'||a[i]>'9')
...{
flag=true;
break;
}
if(strcmp(a,"double")&&flag)
var[string(a)]++;
a=strtok(NULL,",={}[]* .;");
}
}
map<string,int>::iterator iter;
for(iter=var.begin();iter!=var.end();iter++)
if(iter->second==1)
cout<<iter->first<<endl;
for(iter=var.begin();iter!=var.end();iter++)
if(iter->second>1)
cout<<iter->first<<" "<<iter->second<<endl;
return 0;
}
【注意事项】
※ 他们说不要用gets要用scanf不然会WA~
※ double不是变量名~
【点评】
STL,STL,STL中的map练手题 = =//
- 变量名检查
- fjnu 1454 变量名检查
- 变量名
- 变量名
- 利用抽象语法树检查Python中“未定义”的变量名
- 变量名、函数名
- 检查变量的类型
- 检查变量是否存在
- python 实现邮件名检查
- 变量名和变量地址
- 变量名与变量地址
- 变量名中的反义词
- 变量名的问题
- C语言变量名
- 动态变量名
- 变量名的力量
- Java 变量名
- “变量名”到底是什么?
- 两个大数相乘
- 君临天下紫龙气——百度Hi
- 优化程序--C#使用属性代替可访问的数据成员
- Servlet的基础结构
- 请大家留言联系我
- 变量名检查
- 学习心得
- 似乎找到了那个突破点-思索的报酬
- asp观
- 写写心情
- Javac1.7编译器源码分析_简介与安装
- Babelfish
- 今天去买了几本书
- 编译原理课程设计_C--编译器_语法分析&代码生成 - Justin