Pagini recente » Cod sursa (job #2867624) | Cod sursa (job #1370970) | Cod sursa (job #2551777) | Cod sursa (job #1637621) | Cod sursa (job #1342788)
#include<stdio.h>
int stare = 1, i=-1, j=-1;
FILE *f, *g;
struct val
{
char valoare[100];
} v[100];
void automat_save(char c)
{
switch(stare)
{
case 1:
if (c == '"') stare = 2;
break;
case 2:
if (c == '"')
{
stare = 3;
i++;
j=-1;
fprintf(g, ",");
}
else
fprintf(g, "%c", c);
break;
case 3:
if (c == '"') stare = 4;
else if( c>='0' && c<='9')
{
v[i].valoare[++j] = c;
stare = 7;
}
break;
case 4:
if (c == '"')
{
v[i].valoare[++j] = '\0';
stare = 5;
}
else v[i].valoare[++j] = c;
break;
case 5:
if (c == ',') stare = 1;
else if ( c == '}') stare = 6;
break;
case 6:
if (c == ']') stare = 9;
else if ( c == '{') stare = 8;
break;
case 7:
if (c == ',')
{
v[i].valoare[++j] = '\0';
stare = 1;
}
else if ( c == '}')
{
v[i].valoare[++j] = '\0';
stare = 6;
}
else if(c >='0' && c<='9') v[i].valoare[++j] = c;
break;
}
}
void automat_afis(char c)
{
switch(stare)
{
case 1:
if (c == '"') stare = 2;
break;
case 2:
if (c == '"') stare = 3;
break;
case 3:
if (c == '"') stare = 4;
else if(c >='0' && c<='9')
{
fprintf(g, "%c", c);
stare = 7;
}
break;
case 4:
if (c == '"')
{
fprintf(g, ",");
stare = 5;
}
else fprintf(g, "%c", c);
break;
case 5:
if (c == ',') stare = 1;
else if ( c == '}') stare = 6;
break;
case 6:
if (c == ']') stare = 9;
else if ( c == '{')
{
fprintf(g, "\n");
stare = 1;
}
break;
case 7:
if (c == ',')
{
fprintf(g, ",");
stare = 1;
}
else if ( c == '}')
{
fprintf(g, ",");
stare = 6;
}
else if(c >='0' && c<='9') fprintf(g, "%c", c);
break;
}
}
int main()
{
char c;
int k;
f = fopen("convertor.in", "rt");
g = fopen("convertor.out", "wt");
while( stare < 8 && fscanf(f, "%c", &c) == 1 )
automat_save(c);
fprintf(g, "\n");
int z;
for(k=0; k<=i; k++)
{
fprintf(g, "%s", v[k].valoare);
fprintf(g, ",");
}
fprintf(g, "\n");
if(stare == 8)
{
stare = 1;
while( fscanf(f, "%c", &c) == 1 && stare!=9 )
automat_afis(c);
}
fclose(g);
fclose(f);
return 0;
}