Pagini recente » Cod sursa (job #2324511) | Cod sursa (job #187371) | Cod sursa (job #2545442) | Cod sursa (job #416454) | Cod sursa (job #1360450)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream file1("convertor.in");
ofstream file2("convertor.out", ios::trunc);
char c, v1[100000];
int n(0), v2[100000];
bool dreapta(false), acolada(false), ghilimele(false), puncte(false);
int _acolada(0), _ghilimele(0), _puncte(0);
while(!file1.eof())
{
file1.get(c);
/*if( c == '[' && !acolada && !ghilimele)
dreapta = true;
else
if( c == ']' && !acolada && !ghilimele)
dreapta = false;*/
if( c == '{' && !ghilimele)
{
acolada = true;
_acolada++;
}
else
if( c == '}' && !ghilimele && puncte)
{
acolada = false;
_puncte = 0;
}
if(c == '"' && !ghilimele)
ghilimele = true;
else
if( c == '"' && ghilimele)
ghilimele = false;
if(c == ':' && !ghilimele)
{
puncte = true;
_puncte++;
}
if(c == ',' && !ghilimele)
puncte = false;
if(((ghilimele && c != '"') || (c>='0' && c<='9')) && !puncte)
{
v1[n] = c;
v2[n] = _acolada;
n++;
//cout << c;
//file2 << c;
}
else
if(((ghilimele && c != '"') || (c>='0' && c<='9')) && puncte)
{
v1[n] = c;
v2[n] = 0;
n++;
//cout << c;
//file2 << c;
}
}
file1.close();
bool ok(true);
int j = 1;
for(int i=0; i<n; i++)
{
if(v2[i] == 1)
{
file2 << v1[i];
ok = true;
}
else
{
if(v2[i] == 0 && ok)
{
file2 << ",";
ok = false;
}
else
if(v2[i] > 1)
{
file2 << "\n";
break;
}
}
}
bool ok1(false);
for(int i=0; i<n; i++)
{
if(v2[i] == j && !ok1)
{
ok = true; // daca intra pe sectiune 1
ok1 = false;
}
else
{
if(v2[i] == 0 && (ok || ok1))
{
file2 << v1[i];
if(v2[i+1] == j+1)
{
file2 << ",";
file2 << "\n";
j++;
}
else
if(v2[i+1] == j)
file2 << ",";
ok = false; // iese de pe sectiune dif de 0
ok1 = true; //
}
/*if(v2[i] == 0 )
{
cout << ",";
//ok = false;
}*/
}
}
file2 << ",";
file2.close();
/*cout << endl << endl;
for(int i=0; i<n; i++)
cout << v2[i];
cout << "\n" << n;*/
return 0;
}