Cod sursa(job #1346738)

Utilizator irinapatularuPatularu Irina irinapatularu Data 18 februarie 2015 16:30:19
Problema Convertor Scor 30
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.63 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main()
{
    clock_t t_start,t_stop;
    float seconds;
    FILE *f,*g;
    char *linie,**matrice;
    int ct=0,i=0,j=0,ok=0,k=0;
    t_start=clock();
    linie=(char *)calloc(1026,sizeof(char));
    matrice=(char **)malloc(sizeof(char *));
    matrice[0]=(char *)calloc(1026,sizeof(char));
    f=freopen("convertor.in","r",stdin);
    g=freopen("convertor.out","w",stdout);
    while(!feof(f) && ok==0)
    {
        fgets(linie,1026,f);
        linie[strlen(linie)-1]='\0';
        i=0;
        while(linie[i]!='}' && i<strlen(linie))
        {
        if(linie[i]=='\"')
            ct++;
        else
        {
            if(linie[i]==',' && ct)
                {
                ct=0;
                fprintf(g,"%c",linie[i]);
                j++;
                k=0;
                matrice[j]=(char *)calloc(1025,sizeof(char));
                }
            if(linie[i]=='}')
            {
                fprintf(g,"%c\n",',');
                ct=0;
            }
            if(ct==1)
            {
                fprintf(g,"%c",linie[i]);
            }
            if(ct==2)
                if(linie[i]<='9' && linie[i]>='0')
                    {
                        matrice[j][k]=linie[i];
                        k++;
                    }
            if(ct==3)
                {
                    matrice[j][k]=linie[i];
                    k++;
                }
        }
        i++;
    }
    if(i<strlen(linie))
        ok=1;
    }
    fprintf(g,",\n");
    for(k=0;k<=j;k++)
        {
            fprintf(g,"%s",matrice[k]);
            if(k!=j)
                fprintf(g,"%c",',');
        }
    //fprintf(g,"\n");
    ct=0; ok=0;
    do
    {

        while(linie[i]!=']' && i<strlen(linie))
        {
        if(linie[i]=='\"')
            ct++;
        else
        {
            if(linie[i]==',' && ct)
                {
                ct=0;
                fprintf(g,"%c",linie[i]);
                }
            if(linie[i]=='}')
            {
                fprintf(g,"%c\n",',');
                ct=0;
            }
            if(ct==2)
                if(linie[i]<='9' && linie[i]>='0')
                    fprintf(g,"%c",linie[i]);
            if(ct==3)
                fprintf(g,"%c",linie[i]);
        }
        i++;
    }
    if(i<strlen(linie))
        ok=1;
    i=0;
    }while(fgets(linie,1026,f) && ok==0);
    fclose(g);
    fclose(f);
    t_stop=clock();
    seconds=((float)(t_stop-t_start))/CLOCKS_PER_SEC;
    //printf("%f\n",seconds);
    return 0;
}