Cod sursa(job #1343962)

Utilizator mihaiiiChirculescu Mihai mihaiii Data 16 februarie 2015 03:39:34
Problema Convertor Scor 100
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.32 kb
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h> 
int main() 
{

    FILE *f;
    char c;
    bool p = false;
    bool z = false;
    bool spoint=false;
    int ghilimele = 0;
    char *b = (char *)malloc(3000000 * sizeof(char));
    int i=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;
            b[i]=',';
            i++;
        }
        
        if (((c >= 'a'&& c <='z') || (c >= 'A' && c <= 'Z') || (c>='0' && c<='9') || (ghilimele % 2 == 1)) && (z == true) && (c!='"'))
       {
            b[i]=c;
            i++;        
       }
        
        if ((p==true) && (ghilimele % 2 == 0) && (z == false))
        {
            fprintf(fw,",");
        }
        p=false;
        
        if ((ghilimele % 2 == 1) && (c!='"') && (z==false))
        {
        fprintf(fw,"%c",c);
        }
        
      }
    }
    z=false;
    ghilimele = 0;
    b[i]=',';
    b[i+1]='\0';
    fprintf(fw,"\n%s\n",b);
    free(b);
    p=false;
    bool q=false;
    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;
}