记录编号 |
26014 |
评测结果 |
WWAAWWAWWWA |
题目名称 |
解析程序 |
最终得分 |
36 |
用户昵称 |
苏轼 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2011-07-22 16:03:42 |
内存使用 |
0.26 MiB |
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
const int MAXL=505;
char now[MAXL],*str=now;
char buf[MAXL],*nbuf=buf;
bool begin,end,begino;
void reset()
{
begin=end=begino=false;
}
void wrong()
{
printf("Wrong Format\n");
exit(0);
}
void output()
{
char *tnow=now;
if (begino)
{
for(char *i=now;i<str;i++)
if (*i=='\n' || *i=='\"' || *i==',')
wrong();
while(tnow<str && (*(str-1)==' ' || *(str-1)==9))
{
str--;
*str=0;
}
while(tnow<str && (*tnow==' ' || *tnow==9))
tnow++;
}
nbuf+=sprintf(nbuf,"%s\r\n",tnow);
memset(now,0,sizeof(now));
str=now;
reset();
}
int main()
{
freopen("parser.in","r",stdin);
freopen("parser.out","w",stdout);
char ch;
while((ch=getchar())!=EOF)
{
if (ch=='\n')
{
if (begin)
if (end)
output();
else
*str++=ch;
else
output();
}
else if (ch==' ' || ch==' ')
{
if (begin)
{
if (!end)
*str++=ch;
}
else
if (begino)
*str++=ch;
}
else if (ch=='\"')
{
if (begin)
if (end)
{
*str++=ch;
end=false;
}
else
end=true;
else
if (begino)
wrong();
else
begin=true;
}
else if (ch==',')
{
if (begin)
if (end)
output();
else
*str++=ch;
else
output();
}
else
{
if (begin)
if (end)
wrong();
else
*str++=ch;
else
{
begino=true;
*str++=ch;
}
}
}
printf("%s",buf);
return 0;
}