Cod sursa(job #1345393)

Utilizator denisa.sanduDenisa Sandu denisa.sandu Data 17 februarie 2015 16:24:40
Problema Convertor Scor 100
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.14 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{

	char *p, c[2097152], text = 0, nr = 0;
	char cc;
	int ok = 0, print = 0, k = 0, i = 0, n = 0;
	FILE *in, *out;
	in = fopen("convertor.in","rt");
	out = fopen("convertor.out","wt");
	fread(&c, 1, 2097152, in);
	p=strdup(c);
	p=strchr(p,'{');
	p+=1;
	while (p[i]!='{')
	{
		if (p[i] == ':') {
			p=strchr(p,',');
			if (p==NULL)
				break;
			p+=1;
			i=0;
		}
		if (p[i] == '"' && print==0)
		{
			i++;
			print = 1;
		}
		else if (p[i] == '"')
		{
			print = 0;
			n++;
			fprintf(out,",");
		}
		if (print){
			fwrite(&p[i],1,1,out);
		}
		i++;
	}
	i=0;
	fprintf(out ,"\n");
	p=strdup(c);
	while((p = strchr(p, ':')) != NULL)
	{
		p+=1;
		k = 0;
		text = nr = 0;
		while (p[k] != '"' && ( p[k] < '0' || p[k] > '9' ))
			k++;
		if (p[k] == '"')
			k++, text = 1;
		else nr = 1;
		if (text == 1)
			while (p[k]!='"')
			{
				fwrite(&p[k], 1, 1, out); 
				k++;
			}
		else if (nr == 1)
			while (p[k] >= '0' && p[k] <= '9')
			{
				fwrite(&p[k], 1, 1, out);
				k++;
			}
		fprintf(out,",");
		i++;
		if (i==n)
		{
			i=0;
			fprintf(out ,"\n");
		}
	}
	fclose(in);
	fclose(out);
	return 0;
}