Cod sursa(job #1359311)

Utilizator filip.munteanuFilip Munteanu filip.munteanu Data 24 februarie 2015 22:05:08
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.59 kb
#include <stdio.h>
#include <stdlib.h>

FILE *f_in, *f_out;

int main()
{
	char c, *sir = (char *)malloc(500000);
	int k = 0, i = 0;
	f_in = fopen("convertor.in", "rt");
	f_out = fopen("convertor.out", "wt");
	c = fgetc(f_in);
	while(c != ':' /*&& c != EOF*/)
	{
		if(c == ',')
			k = 0;
		else
		{
			if(c == '\"')
			{
				c = fgetc(f_in);
				if(k == 0)
				{
					while(c != '\"')
					{
						fputc(c, f_out);
						c = fgetc(f_in);
					}
					fputc(',', f_out);
				}
				else
				{	while(c != '\"')
					{
						sir[i] = c;
						c = fgetc(f_in);
						i++;
					}
					sir[i] = ',';
					i++;
				}
				k = 1;
			}
			else
				if((c <= '9') && (c >= '0'))
				{
					while((c <= '9') && (c >= '0'))
					{
					sir[i] = c;
						c = fgetc(f_in);
						i++;
					}
					sir[i] = ',';
					i++;
					k = 0;
				}
		}
		if(c == '}')
			fputc('\n', f_out);	
		c = fgetc(f_in);	
	}
	sir[i] = '\0';
	if(i != 0)
	{
		fputc('\n', f_out);
		fputs(sir, f_out);
		fputc('\n', f_out);
	}
	c = fgetc(f_in);
	k = 1;
	while(c != EOF)
	{
		if(c == ' ');
		else	
			if(c == ':')
				k = 0;
			else
			{
				if(k == 0 && c == '\"')
				{
					c = fgetc(f_in);
					while(c != '\"')
					{
						fputc(c, f_out);
						c = fgetc(f_in);
					}
					fputc(',', f_out);
					k = 1;
				}
				else
					if((c <= '9') && (c >= '0') && k == 0)
					{
						while((c <= '9') && (c >= '0'))
						{
							fputc(c, f_out);
							c = fgetc(f_in);
						}
						fputc(',', f_out);
						k = 1;
					}
					else
						if(c == '}')
							fputc('\n', f_out);
			}		
		c = fgetc(f_in);	
	}
	fclose(f_in);
	fclose(f_out);
	free(sir);
	return 0;
}