Cod sursa(job #1357580)
Utilizator | Data | 23 februarie 2015 23:28:30 | |
---|---|---|---|
Problema | Convertor | Scor | 10 |
Compilator | cpp | Status | done |
Runda | rosedu_cdl_2015 | Marime | 4.37 kb |
#include<iostream>
#include<fstream>
#include<cstring>
#include<vector>
#include<ctype.h>
using namespace std;
bool isempty(char a[1024])
{
int i;
for(i=0;i<strlen(a);i++)
if(a[i]!=' ')
return false;
return true;
}
int main()
{
ifstream f("convertor.in");
ofstream g("convertor.out");
char a[1024],b[1024];
char tags[1024][1024];
int k=1,t=0,var,i,tagsCount=0;
while(t==0)
{
f.getline(a,1024);
if(strchr(a,'}'))
t=1;
i=0;
while(a[i]!='\0')
{
if(a[i]=='}')
break;
else
if(a[i]=='"')
{
if(k==0)
goto kappa;
k=0;
var=i;
i++;
while(a[i]!='"')
{
b[i-var-1]=a[i];
i++;
}
b[i-var-1]='\0';
strcpy(tags[tagsCount],b);
tagsCount++;
kappa:
while(a[i]!=','&&a[i]!='\0')
{
i++;
if(a[i]==',')
k=1;
if(a[i]=='}')
break;
}
}
else
i++;
}
}
for(i=0;i<tagsCount;i++)
g<<tags[i]<<",";
g<<"\n";
f.clear();
bool fin;
f.seekg(0,f.beg);
while(!f.eof())
{
if(!isempty(a))
strcpy(b,a);
f.getline(a,1024);
for(i=0;i<strlen(a);i++)
{
if(!strchr(a,',')&&!strstr(a,tags[tagsCount-1]))
{
}
if(a[i]==']')
goto jump;
if(a[i]==','&&(a[i-1]=='"'||isdigit(a[i-1])||a[i-1]=='}'))
{
fin=false;
int var;
if(a[i-1]=='"')
{
var=i-1;
i=i-2;
while(a[i-1]!='"'&&i!=0)
i--;
}
if(isdigit(a[i-1]))
{
var=i;
i--;
while(isdigit(a[i-1]))
i--;
}
if(a[i-1]=='}')
{
jump:
i=i-2;
fin=true;
while(!isdigit(a[i])&&a[i]!='"')
i--;
var=i;
if(isdigit(a[i]))
{
while(isdigit(a[i-1]))
i--;
}
else
{
i=i-1;
while(a[i-1]!='"'&&i!=0)
i--;
}
if(i==var)
{
int j=strlen(b)-1;
if(isdigit(b[j]))
{
while(isdigit(b[j-1]))
j--;
while(isdigit(b[j]))
{
g<<b[j];
j++;
}
}
if(b[j]=='"')
{
while(b[j-1]!='"')
j--;
while(b[j]!='"')
{
g<<b[j];
j++;
}
}
}
}
for(;i<var;i++)
g<<a[i];
i++;
g<<",";
if(fin==true)
{
g<<"\n";
i=i+3;
}
}
}
}
}