Cod sursa(job #1343960)

Utilizator mihaiiiChirculescu Mihai mihaiii Data 16 februarie 2015 03:31:42
Problema Convertor Scor 90
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2 kb
#include <stdio.h>
#include <stdbool.h>
int main() 
{

    FILE *f;
    char c;
    bool p = false;
    bool z = false;
    bool spoint=false;
    int ghilimele = 0;
    f=fopen("convertor.in","rt");
    FILE *fw = fopen("convertor.out", "w");

    while((c=getc(f))!= '}')
    {
      if (c == '{')
        {
          spoint = true;
        }
      if (spoint == true)
      {  
        if (c == '"') 
        {
        ghilimele++;
        p=true;
        }
        
        if ((c == ':') && (ghilimele % 2 == 0))
        {
            z=true;
        }
        
        if ((c == ',') && (ghilimele % 2 == 0))
        {
            z=false;
        }
        
        if ((p==true) && (ghilimele % 2 == 0) && (z == false))
        {
            fprintf(fw,",");
        }
        p=false;
        
        if ((ghilimele % 2 == 1) && (c!='"') && (z==false))
        {
        fprintf(fw,"%c",c);
        }
        
      }
    }
    fclose(f);
    
    fprintf(fw,"\n");
    z=false;
    ghilimele = 0;
    p=false;
    bool q=false;
    f=fopen("convertor.in","rt");
    spoint = false;
    
    while((c=getc(f))!=']')
    {
        if (c == '{')
        {
          spoint = true;
        }
      if (spoint == true)
      {         
        if (c == '"') 
        {
            ghilimele++;
        }
        
       if (((c >= 'a'&& c <='z') || (c >= 'A' && c <= 'Z') || (c>='0' && c<='9') || (ghilimele % 2 == 1)) && (p == true) && (c!='"'))
       {
            fprintf(fw,"%c",c);           
       }
        
        
        
        if ((c == ':') && (ghilimele % 2 == 0))
        {
            p = true;
        }
        
        if ((c == ',') && (ghilimele % 2 == 0) && (q==true))
        {
            p = false;
            fprintf(fw,",");
        }
        
        if ((ghilimele % 2 == 0) && (c == '}'))
        {
            p = false;
            q = false;
            fprintf(fw,",\n");
        }
        if (c == '{')
        {
            q=true;
        }
      }
    }
    fclose(f);
    fclose(fw);
    return 0;
}