Cod sursa(job #1361796)

Utilizator Marius.PPatrascu Marius Florin Marius.P Data 25 februarie 2015 23:47:08
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.85 kb
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MARIME 1025
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)  ) {
		
		if (!(fread (v,sizeof(char),MARIME,f))) break;

		len=strlen(v);		
		

		for ( i=0 ; i < len ; i++) {

			if (v[i] == '}') {
				//i=len;
				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 < len ){
						fprintf (g,"%c",v[i]); 
						i++;
					}
					fprintf (g,",");
				}
				else while ( v[i]!='"' && i < len ) 
					i++;
				ok++;
			continue;
			}
			
			if (isdigit (v[i])) {
				ok+=2;
				i++;
				while ( isdigit(v[i]) && i < len )
					i++;	
				if( !( i+1 < len)) 
					
					break;	

				
			}
		}
	
	}
	fclose (f);
	FILE *d = fopen ("convertor.in","r");
	i=0;
	ok=0;

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

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

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