Cod sursa(job #1361537)

Utilizator Marius.PPatrascu Marius Florin Marius.P Data 25 februarie 2015 22:04:36
Problema Convertor Scor 20
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.67 kb
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MARIME 4096
int main () {
	char v[MARIME];
	int ok=0,i=0,len;
	FILE *f = fopen ("convertor.in","r"),
		 *g = fopen ("convertor.out","w");

	while ( !feof(f) ) {
		
		fread (v,sizeof(char),MARIME,f);
		
		//printf("%s\n",v );
		
		for ( i=0 ; i < MARIME ; i++) {


			if (v[i] == '}') {
				fprintf (g,"\n");
				break;
			}
			
			if (v[i]=='[')
				ok=0;
			if ( !( v[i] == '"' || isdigit(v[i])) )
				continue;
			if (v[i] == '"'){
				ok++;
				i++;
				if (ok % 4 == 1 )  {
					while ( v[i]!='"' && i < MARIME ){
						fprintf (g,"%c",v[i]); 
						i++;
					}
					fprintf (g,",");
				}
				else while ( v[i]!='"' && i < MARIME ) 
					i++;
				ok++;
			continue;
			}
			
			if (isdigit (v[i])) {
				ok+=2;
				i++;
				while ( isdigit(v[i]) && i < MARIME )
					i++;	
				if( !( ++i < MARIME)) break;	
			}
		}
	}


	rewind (f);

	while ( !feof(f) ) {
		
		fread (v,sizeof(char),MARIME,f);
		len=strlen(v);
		for ( i=0 ; i < len ; i++) {


			if (v[i] == '}') {
				fprintf (g,"\n");
			}
			
			if (v[i]=='[')
				ok=0;
			if ( !( v[i] == '"' || isdigit(v[i])) )
				continue;
			if (v[i] == '"'){
				ok++;
				i++;
				if (ok % 4 == 3 )  {
					while ( v[i]!='"' && i < len ){
						fprintf (g,"%c",v[i]); 
						i++;
					}
					fprintf (g,",");
				}
				else while ( v[i]!='"' && i < len ) 
					i++;
				ok++;
			continue;
			}
			
			if (isdigit (v[i])) {
				ok++;
				fprintf (g,"%c",v[i]);
				i++;
				if (ok % 4 == 3 )
				while ( isdigit(v[i]) && i < len ){
					fprintf (g,"%c",v[i]);
					i++;	
				}
				fprintf (g,",");
				ok++;
				if( !( ++i < len)) break;	
			}
		}
	}

	fclose (f);
	fclose (g);
	return 0;
}