Cod sursa(job #1343426)

Utilizator CatalinOlaruCatalin Olaru CatalinOlaru Data 15 februarie 2015 14:36:28
Problema Convertor Scor 70
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.16 kb
#include<stdlib.h>
#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);short *l=malloc(4200000);
	char c;int a,b,cont=0;
	fread(&c,1,1,f);l[cont]=1;cont++;
	int i=0,j=size;
	
	while(ftell(f)<size)
	{	
		fread(&c,1,1,f);l[cont]=1;cont++;
		if(c=='{')
		{
			i=0;
			while(c!='}')
			{
				fread(&c,1,1,f);l[cont]=1;cont++;
				if(c=='"')
				{	
					i++;
					fread(&c,1,1,f);l[cont]=1;cont++;
					if((i & 1) > 0)
					{	
						while(c!='"')
						{	
							fwrite(&c,1,1,out);
							fread(&c,1,1,f);l[cont]=1;cont++;
						}
						fwrite(",",1,1,out);
					}
					else
					{
						while(c!='"')
						{	
							fread(&c,1,1,f);l[cont]=1;cont++;
						}
					}
				}
				else if(isdigit(c))
				{	i++;
					if((i & 1 )> 0)
					{	
						while(isdigit(c))
						{
							fwrite(&c,1,1,out);
							fread(&c,1,1,f);l[cont]=1;cont++;
						}
						fwrite(",",1,1,out);
					}
					else
					{
					while(isdigit(c))
						{
						
							fread(&c,1,1,f);l[cont]=1;cont++;
						}
					}
				}
			}
		size=1;
		fwrite("\n",1,1,out);
		}
	}
	int q;
	
	size=j;
	fseek(f,0,0);
	while(ftell(f)<size)
	{	
		fread(&c,1,1,f);l[cont]=1;cont++;
		if(c=='{')
		{
			i=0;
			while(c!='}')
			{
				fread(&c,1,1,f);l[cont]=1;cont++;
				if(c=='"')
				{
					i++;
					fread(&c,1,1,f);l[cont]=1;cont++;
					if((i & 1) == 0)
					{	
						while(c!='"')
						{	
							fwrite(&c,1,1,out);
							fread(&c,1,1,f);l[cont]=1;cont++;
						}
						fwrite(",",1,1,out);
					}
					else
					{
						//fseek(f,l[i],SEEK_CUR);c='"';
						while(c!='"')
						{	
							fread(&c,1,1,f);l[cont]=1;cont++;
							//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);l[cont]=1;cont++;
						}
						fwrite(",",1,1,out);
					}
					else
					{
					while(isdigit(c))
						{
						
							fread(&c,1,1,f);l[cont]=1;cont++;
						}
					}
				}
			}
		fwrite("\n",1,1,out);
		}
	}
	for(q=0;q<cont;q++)printf("%d ",l[q]);
}