Cod sursa(job #1360390)

Utilizator maxu08Max Alexandru maxu08 Data 25 februarie 2015 14:17:25
Problema Convertor Scor 40
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.45 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
	FILE *in,*out;
	char read;
	int ok,nr,nr2,ok2,ok3,first,i;
	char *sir = malloc(1100*sizeof(char));

	ok = 0;
	ok2 = 0;
	ok3 = 0;
	nr = 1;
	nr2 = 0;
	first = 0;
	i = 0;
	in = fopen("convertor.in","r");
	out = fopen("convertor.out","w");

	first = 0;
	while((read = fgetc(in)) != EOF)
	{
		if(first == 0)
		{
			if(read == '}')
			{
				fprintf(out,"\n");
				fprintf(out,"%s\n",sir);
				first = 1;
				nr = 0;
				ok = 0;
				ok2 = 0;
			}
			else
			if(read == '"' && ok == 0)
			{
				ok = 1;
			}
			else
			if(read == '"' && ok == 1)
			{
				ok = 0;
				if(nr == 1)
					fprintf(out,",");
				nr = 0;
			}	
			else
			if(read == ',' && nr == 0)
				nr = 1;
			else
			if(read != '"' && ok == 1 && nr == 1)
			{
				fprintf(out,"%c",read);
			}


			if(read == ',' && ok2 == 0)
			{
				nr2 = 0;
			}
			else
			if(read == ':')
			{
				nr2 = 1;
			}
			else
			if(read == '"' && nr2 == 1 && ok3 == 0)
			{
				ok3 = 1;
			}
			else
			if(read == '"' && ok3 == 1)
			{
				ok3 = 0;
				if(nr2 == 1) 
				{
					sir[i] = ',';
					i++;
				}
				nr2 = 0;
			}
			else
			if(read != '"' && nr2 == 1 && ok3 == 1)
			{
				sir[i] = read;
				i++;
			}
			else
			if(read == '0' || read == '1' || read =='2' || read == '3' || read == '4' || read =='5' || read == '6' || read == '7' || read =='8' || read == '9')
			{
				if(nr2 == 1 && ok2 == 0)
				{
					ok2 = 1;
				}
				if(nr2 == 1 && ok2 == 1)
				{
					sir[i] = read;
					i++;
				}
			}
			else
			if(read == ',' && ok2 == 1)
			{
				ok2 = 0;
				sir[i] = read;
				i++;
				nr2 = 0;
			}

		}

		else

		{
			if(read == '}')
			{
				nr = 0;
				fprintf(out,"\n");
			}
			else
			if(read == ',' && ok2 == 0)
			{
				nr = 0;
			}
			else
			if(read == ':')
			{
				nr = 1;
			}
			else
			if(read == '"' && nr == 1 && ok == 0)
			{
				ok = 1;
			}
			else
			if(read == '"' && ok == 1)
			{
				ok = 0;
				if(nr == 1)
					fprintf(out,",");
				nr = 0;
			}
			else
			if(read != '"' && nr == 1 && ok == 1)
			{
				fprintf(out,"%c",read);
			}
			else
			if(read == '0' || read == '1' || read =='2' || read == '3' || read == '4' || read =='5' || read == '6' || read == '7' || read =='8' || read == '9')
			{
				if(nr == 1 && ok2 == 0)
				{
					ok2 = 1;
				}
				if(nr == 1 && ok2 == 1)
				{
					fprintf(out,"%c",read);
				}
			}
			else
			if(read == ',' && ok2 == 1)
			{
				ok2 = 0;
				fprintf(out,",");
				nr = 0;
			}
		}
	}

	fclose(in);
	fclose(out);
}