Cod sursa(job #1358779)

Utilizator Marius.PPatrascu Marius Florin Marius.P Data 24 februarie 2015 19:51:38
Problema Convertor Scor 30
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.59 kb
#include <stdio.h>
#include <ctype.h>
#define FOREVER 1
int main ()	{
	FILE *f=fopen ("convertor.in","r");
	FILE *g=fopen ("convertor.out","w");
	char a;
	int nr1=0;
	while (FOREVER)	{
		
		fscanf (f,"%c",&a);
		
		if ( (a == '[') || ( a== '{') || (a == ',') || (a == ':') || (nr1 % 2 == 0 && ((a == ' ') || (a == '\t') || (a == '\n')) ))	
			continue;
		if ( a == '"' ) {
			nr1++;	
			if ( nr1 % 4 == 0 || nr1 % 4 == 3)
				continue;
			do {
					fscanf (f,"%c",&a);		
					if (a == '"') {
						nr1++;
						fprintf (g,",");
						break;
					}
					fprintf (g,"%c",a);
			}
			while (FOREVER);
		}
		if ( isdigit(a)) {
			nr1++;
			do {
					fscanf (f,"%c",&a);		
					if  (!isdigit(a)) {
						nr1++;
						break;
					}
			}
			while (FOREVER);
		continue;
		}
		if (a == '}') { fprintf (g,"\n");
			break;
			}
		
	}

	fclose (f);

	FILE *d=fopen ("convertor.in","r");
	nr1=0;
	while (FOREVER)	{
		
		fscanf (d,"%c",&a);
		
		if ( (a == '[') || ( a== '{') || (a == ',') || (a == ':') || (nr1 % 2 == 0 && ((a == ' ') || (a == '\t') || (a == '\n')) ))	
			continue;
		if ( a == '"' ) {
			nr1++;	
			if ( nr1 % 4 == 1 || nr1 % 4 == 2)
				continue;
			do {
					fscanf (d,"%c",&a);		
					if (a == '"') {
						nr1++;
						fprintf (g,",");
						break;
					}
					fprintf (g,"%c",a);
			}
			while (FOREVER);
		}
		if (isdigit(a)) {
			nr1++;
			do {
					fscanf (d,"%c",&a);		
					if  (!(isdigit(a))) {
						nr1++;
						fprintf (g,",");
						break;
					}
					fprintf (g,"%c",a);
			}
			while (FOREVER);
			continue;
		}
		if ( a == '}') fprintf (g,"\n");

		if ( a == ']') 
			break;
	}	
	fclose (d);
	return 0;
}