Cod sursa(job #1350012)

Utilizator remus.ionitaIonita Remus remus.ionita Data 20 februarie 2015 16:52:40
Problema Convertor Scor 90
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.73 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reset_count (char x, int *count, FILE *f) {
	if ( x == '}' ) {
		fputs("\n",f);
		*count = 0;
	}
}
void prelucrare(char *namein, char *nameout) {
        FILE *f1 = fopen(namein, "r");
        FILE *f2 = fopen(nameout, "w");
	int count = 0;
	int virg = 0;
	char c1, c2;

	while ( (c1 = fgetc(f1)) != '}' ) {
		if ( c1 == '"' ) {
			virg = 1;
			count ++;
			while ( (c2 = fgetc(f1)) != '}') { 
				if (c2 == '"')
					break;
				if (count % 2 == 1 )
					fputc(c2,f2);
			}
		}
		if ( (c1 - '0') >= 0 && (c1 - '0') <= 9 ) {
			virg = 1;
			count ++;
			while ( (c2 = fgetc(f1)) != EOF) {
				if ( (c2 - '0') < 0 || (c2 - '0') > 9 )
					break;
                        }
                }

	if (virg && count % 2 == 1) {
		fputc(',',f2);
		virg = 0;
		}
	}
	
	fputs("\n",f2);
	virg = 0;
	count = 0;
	fseek(f1,0,0);	

	while ( (c1 = fgetc(f1)) != EOF ) {
		
		reset_count(c1,&count,f2);

		if ( c1 == '"' ) {
			virg = 1;
			count ++;
			while ( (c2 = fgetc(f1)) != EOF) { 
					if (c2 == '"') 
						break;
					if (count % 2 == 0 )
						fputc(c2,f2);
					reset_count(c2,&count,f2);
			}
		}
	
		if ( (c1 - '0') >= 0 && (c1 - '0') <= 9 ) {
			virg = 1;
			count ++;
			if (count % 2 == 0 )
				fputc(c1,f2);
			while ( (c2 = fgetc(f1)) != EOF) {     
                                        if ( (c2 - '0') < 0 || (c2 - '0') > 9 )
						break;					
					if (count % 2 == 0 )
						 fputc(c2,f2);
					reset_count(c2,&count,f2);
                        }
		}

		if (virg && count % 2 == 0) {
			fputc(',',f2);
			virg = 0;
		}
	}
	

        fclose(f2);
}
int main(void)
{
        char namein[] = "convertor.in";
        char nameout[] = "convertor.out";
        prelucrare(namein,nameout);
        return 0;
}