Cod sursa(job #1343200)

Utilizator RaduDoStochitoiu Radu RaduDo Data 14 februarie 2015 23:32:39
Problema Convertor Scor 90
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 2.25 kb
#include<stdio.h>
#include<string.h>

int main()
{
	FILE *f, *f2;
	char c, aux[1200][1200], auxx[100000];
	int lung[1200], l[1200], i, k = 0, ok = 0, ll, kk = 0;
	f = fopen("convertor.in", "rt");
	f2 = fopen("convertor.out", "wt");
	do
	{
		fread(&c, 1, 1, f);
		if(c == '"')
		{
			l[k] = 0;
			do
			{
				fread(&c, 1, 1, f);
				if(c == '"') break;
				fwrite(&c, 1, 1, f2);
				++l[k];
			}
			while(1);
			do
			{
				fread(&c, 1, 1, f);
				if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
				{
					ll = 0;
					do
					{
						aux[k][ll++] = c;
						fread(&c, 1, 1, f);
						if(!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
						{
							aux[k][ll] = '\0';
							lung[k] = ll;
							break;
						}
					}
					while(1);
				}
				else if(c == '"')
				{
					fread(&c, 1, 1, f);
					ll = 0;
					do
					{
						aux[k][ll++] = c;
						fread(&c, 1, 1, f);
						if(c == '"')
						{
							aux[k][ll] = '\0';
							lung[k] = ll;
							break;
						}
					}
					while(1);
				}
				if(c == ',') break;
				if(c == '}')
				{
					ok = 1;
					break;
				}
			}
			while(1);
			k++;
			c = ',';
			fwrite(&c, 1, 1, f2);
		}
		if(ok == 1) break;
	}
	while(1);
	c = '\n';
	fwrite(&c, 1, 1, f2);
	for(i=0; i<k; ++i)
	{
		fwrite(&(aux[i]), lung[i], 1, f2);
		c = ',';
		fwrite(&c, 1, 1, f2);
	}
	c = '\n';
	fwrite(&c, 1, 1, f2);
	
	do
	{
		fread(&c, 1, 1, f);
		if(c == '"')
		{
			fread(&auxx, l[kk] + 1, 1, f);
			kk++;
			if(kk == k) kk = 0;
			do
			{
				fread(&c, 1, 1, f);
				if((c >= '0' && c <= '9') || c == '"' || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) break;
			}
			while(1);
			if(c != '"')
			{
				fwrite(&c, 1, 1, f2);
				do
				{
					fread(&c, 1, 1, f);
					if(!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) break;
					fwrite(&c, 1, 1, f2);
				}
				while(1);
			}
			else
			do
			{
				fread(&c, 1, 1, f);
				if(c == '"') break;
				fwrite(&c, 1, 1, f2);
			}
			while(1);
			c = ',';
			fwrite(&c, 1, 1, f2);
			if(kk == 0)
			{
				c = '\n';
				fwrite(&c, 1, 1, f2);
			}
		}
		
		if(c == ']') break;
	}
	while(1);
	return 0;
}