Cod sursa(job #1349033)

Utilizator remus.ionitaIonita Remus remus.ionita Data 19 februarie 2015 22:46:51
Problema Convertor Scor 50
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.61 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int empty(char *cuv) {
        int i = 0;
        for (i = 0; i < strlen(cuv); i++)
                if (cuv[i] != ' ' && cuv[i] != '\t')
                        return 1;
        return 0;
}
void prelucrare(char *namein, char *nameout) {
	FILE *f1 = fopen(namein, "r");
        FILE *f2 = fopen(nameout, "w");
	char line[200000], c, text[5999999];
        int nr = 0, first = 1;
	int pos = 0;
        int sw = 0;

	int i = 0;
	while ( (c = fgetc(f1)) != EOF ) {
		text[i] = c;		
		i++;
	}	
	i = 0;

	while ( i < strlen(text) )  {
		sw = 0;
		if(text[i] == '"') {
			i = i + 1;
			while ( text[i] != '"') {
				if (nr % 2 == 1 && first == 0) fputc(text[i],f2);	
				if (nr % 2 == 1 && first == 1) {line[pos] = text[i];pos++;}
				if (nr % 2 == 0 && first == 1) fputc(text[i],f2); 
				i++;
			}
		if ( nr % 2 == 1) fputc(',',f2);
		if (nr % 2 == 1 && first == 1)  {strcat(line,",");pos++;}
		nr++;
		}
		if(text[i] == '}') {
			fputs("\n",f2);
			nr = 0;
			if(first) {
				fputs(line,f2);
				fputs("\n",f2);
			}
			first = 0;
		}
		while( (text[i] - '0') >= 0 && (text[i] - '0') <= 9 ) {
			if (nr % 2 == 1 && first == 0) fputc(text[i],f2);
			if (nr % 2 == 1 && first == 1) {line[pos] = text[i];pos++;}
			if (nr % 2 == 0 && first == 1) fputc(text[i],f2);
			i++;
			sw=1;
		}
		if(sw) {
			if ( nr % 2 == 1) fputc(',',f2);
			if (nr % 2 == 1 && first == 1)  {strcat(line,",");pos++;}
			nr++;
		}
		i++;		
	}
	
		
        fclose(f2);
}
int main(void)
{
        char namein[] = "convertor.in";
        char nameout[] = "convertor.out";
        prelucrare(namein,nameout);
        return 0;
}