Cod sursa(job #1343918)

Utilizator RaduDoStochitoiu Radu RaduDo Data 16 februarie 2015 01:09:26
Problema Convertor Scor 100
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 3.58 kb
#include<stdio.h>
#include<string.h>
 
int main()
{
    FILE *f, *f2;
    char c, aux[20000][200], auxx[1200];
    int lung[100000], l[100000], i, k = 0, ok = 0, ll, kk = 0;
    f = fopen("convertor.in", "rt");
    f2 = fopen("convertor.out", "wt");
    do
    {
        fread(&c, 1, 1, f);
        if(c == '"')
        {
            l[k] = 0;
            do
            {
                fread(&c, 1, 1, f);
                if(c == '"') break;
                fwrite(&c, 1, 1, f2);
                ++l[k];
            }
            while(1);
            do
            {
                fread(&c, 1, 1, f);
                if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
                {
                    ll = 0;
                    do
                    {
                        aux[k][ll++] = c;
                        fread(&c, 1, 1, f);
                        if(!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
                        {
                            aux[k][ll] = '\0';
                            lung[k] = ll;
                            break;
                        }
                    }
                    while(1);
                }
                else if(c == '"')
                {
                    fread(&c, 1, 1, f);
                    ll = 0;
                    do
                    {
                        aux[k][ll++] = c;
                        fread(&c, 1, 1, f);
                        if(c == '"')
                        {
                            fread(&c, 1, 1, f);
                            aux[k][ll] = '\0';
                            lung[k] = ll;
                            break;
                        }
                    }
                    while(1);
                }
                if(c == ',') break;
                if(c == '}')
                {
                    ok = 1;
                    break;
                }
            }
            while(1);
            k++;
            c = ',';
            fwrite(&c, 1, 1, f2);
        }
        if(ok == 1) break;
    }
    while(1);
    c = '\n';
    fwrite(&c, 1, 1, f2);
    for(i=0; i<k; ++i)
    {
        fwrite(&(aux[i]), lung[i], 1, f2);
        c = ',';
        fwrite(&c, 1, 1, f2);
    }
    c = '\n';
    fwrite(&c, 1, 1, f2);
     
    do
    {
        fread(&c, 1, 1, f);
        if(c == '"')
        {
            fread(&auxx, l[kk] + 1, 1, f);
            kk++;
            if(kk == k) kk = 0;
            do
            {
                fread(&c, 1, 1, f);
                if((c >= '0' && c <= '9') || c == '"' || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) break;
            }
            while(1);
            if(c != '"')
            {
                fwrite(&c, 1, 1, f2);
                do
                {
                    fread(&c, 1, 1, f);
                    if(!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) break;
                    fwrite(&c, 1, 1, f2);
                }
                while(1);
            }
            else
            do
            {
                fread(&c, 1, 1, f);
                if(c == '"') break;
                fwrite(&c, 1, 1, f2);
            }
            while(1);
            c = ',';
            fwrite(&c, 1, 1, f2);
            if(kk == 0)
            {
                c = '\n';
                fwrite(&c, 1, 1, f2);
            }
        }
         
        if(c == ']') break;
    }
    while(1);
    return 0;
}