Pagini recente » Cod sursa (job #1360660) | Cod sursa (job #1360595) | Cod sursa (job #3201185) | Cod sursa (job #2406096) | Cod sursa (job #1359598)
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
FILE *g;
g = fopen("convertor.out", "w");
FILE *f;
f = fopen("convertor.in", "r");
string s;
char c;
int contor = 0;
c = fgetc(f);
string chei;
while (c != '}')
{
if (c == '"')
{
/*
*daca s-a ajuns la un cuvant sau numar de pe pozitie
*impara atunci retinem cuvantul in stringul chei
*altfel in valori
*/
contor = (contor + 1) % 2;
if (contor)
{
char x;
x = fgetc(f);
while (x != '"')
{
chei += x;
x = fgetc(f);
}
chei += ',';
}
else
{
char x;
x = fgetc(f);
while (x != '"')
{
s += x;
x = fgetc(f);
}
s += ',';
}
}
else if (((c - '0') < 10) && (c - '0' >= 0))
{
contor = (contor + 1) % 2;
// prima cifra a numarului
s += c;
char s3[1000];
/*
*sirul va fi format din cifre cu o virgula sau '}' la sfarsit
*sau o virgula sau '}'
*/
fscanf(f, "%s", s3);
string s2 (s3);
int e = 0;
if (s2.find("}") != string::npos)
e = 1;
while (((s2.back() - '0') > 9) || (s2.back() - '0' < 0))
{
s2.pop_back();
if (s2.size() == 0)
break;
}
s += s2;
s += ',';
//adica se ajunge la o '}'
if (e)
break;
}
c = fgetc(f);
}
fputs(chei.c_str(), g);
fputc('\n', g);
//primu set de valori;
fputs(s.c_str(), g);
fputc('\n', g);
c = fgetc(f);
while (c != EOF)
{
if (c == '{')
{
string valori;
contor = 0;
while (c != '}')
{
if (c == '"')
{
contor = (contor + 1) % 2;
if (contor == 0)
{
char x;
x = fgetc(f);
while (x != '"')
{
valori += x;
x = fgetc(f);
}
valori += ',';
}
else
{
char x;
do
{
x = fgetc(f);
} while (x != '"');
}
}
else if (((c - '0') < 10) && (c - '0' >= 0))
{
contor = (contor + 1) % 2;
if (contor == 0)
{
valori += c;
char s3[1000];
fscanf(f, "%s", s3);
string s2 (s3);
int e = 0;
if (s2.find("}") != string::npos)
e = 1;
while (((s2.back() - '0') > 9) || (s2.back() - '0' < 0))
{
s2.pop_back();
if (s2.size() == 0)
break;
}
valori += s2;
valori += ',';
if (e)
break;
}
}
c = fgetc(f);
}
fputs(valori.c_str(), g);
fputc('\n', g);
}
c = fgetc(f);
}
fclose(f);
fclose(g);
return 0;
}