Pagini recente » Cod sursa (job #635565) | Cod sursa (job #1357727) | Cod sursa (job #3198489) | Cod sursa (job #2918807) | Cod sursa (job #1341724)
#include <fstream>
using namespace std;
ifstream f("convertor.in");
ofstream g("convertor.out");
ofstream h("log.txt");
int state = 1;
void property_automata(char c)
{
switch(state)
{
case 1:
if(c == '['){
state = 2;
}
break;
case 2:
if(c == '{')
state = 3;
break;
case 3:
if(c == '"')
state = 4;
break;
case 4:
if(c == '"')
{
g << ',';
state = 5;
}
else if(c > 47 && c < 58)
{
state = 6;
}
else
g << c;
break;
case 5:
if(c == ',')
state = 3;
if(c == '}')
state = 7;
break;
case 6:
if(c == ',')
state = 3;
break;
}
}
void value_automata(char c)
{
switch(state)
{
case 1:
if(c == '[')
state = 2;
break;
case 2:
if(c == '{')
state = 3;
break;
case 3:
if(c == ':')
state = 4;
break;
case 4:
if(c == '"')
state = 5;
if(c > 47 && c < 58)
{
g << c;
state = 8;
}
break;
case 5:
if(c == '"')
{
g << ',';
state = 6;
}
else
g << c;
break;
case 6:
if(c == ',')
state = 3;
else if (c == '}')
state = 7;
break;
case 7:
if(c == ',')
{
g << "\n";
state = 2;
}
else if(c == ']')
state = 9;
break;
case 8:
if(c == ' ' || c == ',' || c == '\n' || c == '\t')
{
g << ",";
state = 6;
}
else
g << c;
break;
}
}
int main()
{
char n;
while(f >> noskipws >> n && state != 7)
{
//h << state << " " << n << endl;
property_automata(n);
}
g << "\n";
f.clear();
f.seekg(0,ios::beg);
state = 1;
while(f >> noskipws >> n && state != 9)
{
//h << state << " " << n << endl;
value_automata(n);
}
f.close();
g.close();
h.close();
return 0;
}