Mai intai trebuie sa te autentifici.
Cod sursa(job #1342674)
Utilizator | Data | 14 februarie 2015 13:36:29 | |
---|---|---|---|
Problema | Convertor | Scor | 70 |
Compilator | c | Status | done |
Runda | rosedu_cdl_2015 | Marime | 1.93 kb |
#include<stdio.h>
#include<ctype.h>
int main()
{
FILE * f;
f=fopen("convertor.in","rt");
FILE * out;
out=fopen("convertor.out","wt");
fseek(f, 0, SEEK_END);
int size=ftell(f);
fseek(f,0,0);
char c;
fread(&c,1,1,f);
int i=0,j=size;
short l[100000];int a,b;
while(ftell(f)<size)
{
fread(&c,1,1,f);
if(c=='{')
{
i=0;
while(c!='}')
{
fread(&c,1,1,f);
if(c=='"')
{
i++;l[i]=0;
fread(&c,1,1,f);a=ftell(f);
if((i & 1) > 0)
{
while(c!='"')
{
fwrite(&c,1,1,out);
fread(&c,1,1,f);
}b=ftell(f);
fwrite(",",1,1,out);l[i-i/2]=b-a;
}
else
{
while(c!='"')
{
fread(&c,1,1,f);
}
}
}
else if(isdigit(c))
{ i++;
if((i & 1 )> 0)
{
while(isdigit(c))
{
fwrite(&c,1,1,out);
fread(&c,1,1,f);
}
fwrite(",",1,1,out);
}
else
{
while(isdigit(c))
{
fread(&c,1,1,f);
}
}
}
}
size=1;
fwrite("\n",1,1,out);
}
}
int q;
for(q=0;q<i/2+1;q++)
printf("%d ",l[q]);
size=j;
fseek(f,0,0);
while(ftell(f)<size)
{
fread(&c,1,1,f);
if(c=='{')
{
i=0;
while(c!='}')
{
fread(&c,1,1,f);
if(c=='"')
{
i++;
fread(&c,1,1,f);
if((i & 1) == 0)
{
while(c!='"')
{
fwrite(&c,1,1,out);
fread(&c,1,1,f);
}
fwrite(",",1,1,out);
}
else
{
fseek(f,l[i-i/2]-1,SEEK_CUR);fread(&c,1,1,f);
/*while(c!='"')
{
fread(&c,1,1,f);printf("%d ",i);printf("%ld %c\n",ftell(f),c);
}*/
}
}
else if(isdigit(c))
{ i++;
if((i & 1 ) == 0)
{
while(isdigit(c))
{
fwrite(&c,1,1,out);
fread(&c,1,1,f);
}
fwrite(",",1,1,out);
}
else
{
while(isdigit(c))
{
fread(&c,1,1,f);
}
}
}
}
fwrite("\n",1,1,out);
}
}
}