Pagini recente » Cod sursa (job #2220101) | Cod sursa (job #1303471) | Cod sursa (job #401824) | Cod sursa (job #538086) | Cod sursa (job #1343154)
#include <string>
#include <fstream>
using namespace std;
ifstream f("convertor.in");
ofstream g("convertor.out");
int isDigit(char c)
{
if ((int)c >= 48 && (int)c <= 57)
return 1;
else
return 0;
}
void print_value()
{
//presupunem ca suntem pe pozitia caracterului :
char c;
//fseek(f, dotpos + 1, SEEK_SET);
while (1)
{
f.get(c);
if (c == '"')
{
//string
f.get(c);
do
{
g << c;
f.get(c);
}
while (c != '"');
g << ",";
break;
}
else
if (isDigit(c))
{
//number
while (isDigit(c))
{
g << c;
f.get(c);
}
g << c;
break;
}
}
}
int afisare_chei()
{
long int nrkeys = 0;
f.clear();
f.seekg(0, ios::beg);
//afisare prima cheie
char c;
int flag = 0;
f.get(c);
while (c!='"')
f.get(c);
f.get(c);
while (c != '"')
{
g << c;
f.get(c);
}
nrkeys++;
g << ",";
//afisare urmatoarele chei
do
{
f.get(c);
while (c != ',')
{
f.get(c);
if (c == '}')
{
flag = 1;
break;
}
}
if (flag)
break;
else
nrkeys++;
f.get(c);
while (c != '"')
f.get(c);
f.get(c);
while (c != '"')
{
g << c;
f.get(c);
}
g << ",";
}
while (c != '}');
return nrkeys;
}
void get_values(long int nrkeys)
{
long int valuenr = 0;
char c;
f.clear();
f.seekg(0, ios::beg);
f.get(c);
while (c != ']')
{
if (c == ':')
{
valuenr++;
print_value();
if (valuenr % nrkeys == 0)
g<<"\n";
}
f.get(c);
}
}
int main(void)
{
long int nrkeys;
// start = clock();
//printf("%d\n", get_nrkeys(f));
nrkeys = afisare_chei();
g << "\n";
get_values(nrkeys);
//get_dots_positions(f,g,0);
f.close();
g.close();
//stop = clock();
//printf("%.6f\n", (double)(stop - start) / CLOCKS_PER_SEC);
return 0;
}