Cod sursa(job #1344493)

Utilizator roxanamacarieMacarie Roxana roxanamacarie Data 16 februarie 2015 19:24:56
Problema Convertor Scor 50
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 1.56 kb
#include<stdio.h>
#include<ctype.h>
#include<string.h>
typedef struct
{
int s,f;
}delimitator;
  int main()
{   freopen("convertor.in","r",stdin);
    freopen("convertor.out","w",stdout);
	char s[2000000],c;
    int i=0,n,j=0,m=0,k,nr=0,ghi[3],l;
	delimitator d[50];
	while(scanf("%c",&c)!=EOF)
	{   
		if(c=='\n')
		  continue;
	   else
		{s[i]=c;
	    i++;}
	}
	n=i;
	for(i=0;i<n;i++)
	{
		if(s[i]=='{')
		{	d[m].s=i;
			s[i]=',';
		}
		if(s[i]=='}')
		{
			d[m].f=i;
			s[i]=',';
			m++;
		}
    }
	for(i=d[0].s;i<d[0].f;i++)
	{	if(s[i]==',')
		{	i++;
			while(s[i]!=':')
			{
			          if(s[i]=='"')
						{i++;
						continue;
						}
		
					    if(s[i]==' ')// && )
						 {
						 if ( isalpha(s[i+1]) || isdigit(s[i+1]) )
							{
								printf("%c",s[i]);
								i++;
							}
						 else
							{
								i++;
								continue;
							}
						 }
					printf("%c",s[i]);
						i++;
				
			}
		 printf(",");
		}
	}
	printf("\n");
	for(j=0;j<m;j++)
	{	for(i=d[j].s;i<=d[j].f;i++)
			{    
			   if(s[i]==':')
			   {nr=0;
			    k=i;
				while(s[i]!=',')
				{ 
					if(s[i]=='"')
						{nr++;
						ghi[nr]=i;}
					
					i++;
				}
				if(nr!=2)
					while(s[k]!=',')
					 { if(isdigit(s[k]))
						{ printf("%c",s[k]);
							 k++;
						}
					   else
					   { k++;
					     continue;
					   }
					 }
				else
					for(l=ghi[1]+1;l<ghi[2];l++)
						printf("%c",s[l]);
				
				printf(",");
				i++;
			   }
				
             }

	printf("\n");
	}
	
    return 0;     
	
}