Cod sursa(job #1345525)

Utilizator mateinMatei Nistor Ionut matein Data 17 februarie 2015 18:08:43
Problema Convertor Scor 60
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.82 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main () {

	int i, flag, nr_elem = 0, elem_afisate, nr, cif, ap;
	char linie[1025];
	FILE *f,*g;
	f=fopen( "convertor.in" , "r" );
	g=fopen( "convertor.out" , "w");

	while ( !feof(f) ) {
		fgets ( linie , 1024 , f );
		i = 0;
		flag = 0;
		ap = 0;
		while ( linie[i] != '}' && i < strlen(linie) ) {

			if ( linie[i] == ':' ) {

                nr_elem++;
                i++;
                while(linie[i] != ',') {

                    i++;
                    if( linie[i] == '}' ) {

                        i--;
                        break;

                    }
                }

			}

			if ( linie[i] == '"' ) {

				i++;
				while ( linie[i] != '"' ) {

					fprintf ( g , "%c" , linie[i] );
					i++;

				}
				fprintf ( g , "," );

			}
			i++;
		}

		if( linie[i] == '}' ) {

            break;

		}

	}
	fprintf(g,"\n");
	fseek ( f , 0 , SEEK_SET );
	elem_afisate = 0;
	flag = 0;
	while( !feof(f) ) {

		fgets ( linie , 1024 , f );
		i=0;

		while ( i < strlen(linie) ) {

			if ( linie[i] == ':' ) {

                flag = 1;
                i++;

			}

			if( flag == 1) {

				while ( linie[i] == ' ' ) {

					i++;

				}
				if ( linie[i] == '"' ) {
                    i++;
					while ( linie[i] != '"' ) {

						fprintf ( g , "%c" , linie[i] );
						i++;

					}
					fprintf ( g , "," );
                    flag = 0;

				}
				if( linie[i]>='0' && linie[i]<='9') {

					nr = 0;
					while ( linie[i] != ' ' && linie[i] != ',' ) {

						cif = linie[i]-'0';
						nr = nr*10+cif;
						i++;

					}
					fprintf ( g , "%d," , nr );
					flag = 0;

				}
				elem_afisate++ ;
				if ( elem_afisate == nr_elem ) {

					fprintf (g ,"\n");
					elem_afisate = 0;

				}

			}
			i++;

		}


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