Cod sursa(job #1359421)

Utilizator filip.munteanuFilip Munteanu filip.munteanu Data 24 februarie 2015 22:34:29
Problema Convertor Scor 90
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.52 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 = fgetc(f_in);
		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;
				}
		}			
	}
	sir[i] = '\0';
	if(i != 0)
	{
		fputc('\n', f_out);
		fputs(sir, f_out);
		fputc('\n', f_out);
	}
	k = 1;
	while(c != EOF)
	{
		c = fgetc(f_in);
		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);
			}		
			
	}
	fclose(f_in);
	fclose(f_out);
	free(sir);
	return 0;
}