1727 - 小胖的erlang
时间限制 : 1 秒
内存限制 : 128 MB
小胖最近一直在学习erlang,里面有很多东西和c语言不一样,虽然是用c开发出来的,例如:erlang里面没有变量,没有循环,只有分支结构。不过erlang也有他自己独特的优点.
在 erlang中,有5种数据类型
数值:
integer 整数型
float 浮点型
元子:
atoms 以小写字母开头的字符串,只是1个名字,没有任何意义,例:charles,inch
元组:
tuples:用"{"和"}"把数值 和 元子放在一起 例如:{m,1},{cm,100},{mm,1000}
列表:
list:用"["和"]"可以包括任意变量,包括列表 例如:[aa],[12,1.2],[1,{m,1}],[1,[1,{m,1}]]
如果是一个字符串,那么她其实是一个list,而且是用ASCII表示的,例如,"abc" = [97,98,99]。
题目输入
输入erlang 数据,输出对应的类型
题目输出
输出对应类型,如果有tuples 或者 list,那么要用"(",")"把他里面的内容括起来,具体输出格式参照样例输出
输入/输出样例
输入格式
1
1.2
asd
{m,1}
"abc"
[aa]
[1,[1,{m,1}]]
""
{}
输出格式
integer float atoms tuples(atoms,integer) list(integer,integer,integer) list(atoms) list(integer,list(integer,tuples(atoms,integer))) list() tuples()
C++解答
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char s[105]; bool k;//判断是不是"" int tuples_run(int a); int list_run(int a); int run(int a); int char_run(int a); int tuples_run(int a) { int t; printf("tuples("); t=run(a); printf(")"); return t; } int list_run(int a) { int t; printf("list("); t=run(a); printf(")"); return t; } int char_run(int a) { int t; printf("list("); t=run(a); printf(")"); return t; } int run(int a) { int len = strlen(s); int sum; int i; sum=0; for(i=a;i<len;) { if(s[i]=='[') i=list_run(i+1); else if(s[i]=='{') i=tuples_run(i+1); else if(s[i] ==']' || s[i] == '}') { return i+1; } else if(s[i]=='"'&& k==false) { k=true; i = char_run(i+1); } else if(s[i]==',') { i++; printf(","); } else if(k==false) { if(s[i]>='0' &&s[i] <= '9') { while(s[i]!=',' && s[i] != '.' && s[i] != ']' && s[i]!='}' &&i < len) i++; if(s[i]=='.') { while(s[i]!=',' && s[i] != ']' && s[i]!='}' &&i < len)i++; printf("float"); if(s[i]==',') { i++; printf(","); } } else { printf("integer"); if(s[i]==',') { i++; printf(","); } } } else { printf("atoms"); while(s[i]!=','&& s[i]!=']' && s[i]!='}' && i<len) i++; if(s[i]==',') { i++; printf(","); } } } else { if(s[i]!='"') { i++; printf("integer"); } while(s[i]!='"') { i++; printf(",integer"); } k=false; return i+1; } } } int main() { while(gets(s)) { run(0); printf("\n"); } return 0; }