Cod sursa(job #1361359)

Utilizator DeeiAndrei Visan Deei Data 25 februarie 2015 20:52:20
Problema Convertor Scor 70
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.69 kb
#include <stdio.h>
#include <stdlib.h>



int main()
{
    FILE *fin1 = fopen("convertor.in" , "rt");
    FILE *fout = fopen("convertor.out" , "wt");;

    char c;

    int end = 0, end1 = 0, stage, stage1;


    while(!end1)
    {
        fscanf(fin1, "%c", &c);
        switch(c)
        {
        case '{' :
            {
                stage1 = 1;
                break;
            }
        case ',' :
            {
                stage1 = 1;
                fputc(',' , fout);
                break;
            }
        default :
            {
                if(stage1 == 1 && c == '"')
                {
                    stage1 = 2;
                    break;
                }
                else if(stage1 == 2 && c != '"')
                {
                    fputc(c , fout);
                    break;
                }
                else if(stage1 == 2 && c == '"')
                {
                    stage1 = 0;
                    break;
                }
                else if(c == '}')
                {
                    fputc(',' , fout);
                    end1 = 1;
                    break;
                }
            }
        }
    }

    fclose(fin1);

    FILE *fin = fopen("convertor.in" , "rt");

    while(!end)
    {
        fscanf(fin , "%c" , &c);
        switch(c)
        {
        case ':' :
            {
                stage = 1;
                break;
            }
        case '{' :
            {
                fputc('\n' , fout);
                break;
            }
        case ',' :
            {
               fputc(',' , fout);
               stage = 0;
               break;
            }
        case '}' :
            {
                stage = 0;
                break;
            }
        default :
            {
                if(stage == 1 && c != '"' && c != ' ' && c != '\n')
                {
                    fputc(c , fout);
                    break;
                }
                else if(stage == 1 && c == '"')
                {
                    stage = 2;
                    break;
                }
                else if(stage == 2 && c != '"')
                {
                    fputc(c , fout);
                    break;
                }
                else if(stage == 2 && c == '"')
                {
                    stage = 0;
                    break;
                }
                else if(c == ']')
                {
                    end = 1;
                    break;
                }
            }
        }
    }
    fclose(fin);
    fputc(',' , fout);
    fclose(fout);

    return 0;


}