Cod sursa(job #1357008)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 23 februarie 2015 18:20:15
Problema Convertor Scor 100
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 1.89 kb
#include <fstream>
#include <cstring>
#include <string>
#define N 1000
using namespace std;
void prima_lin(fstream &f, fstream &g)
{
    char ch;
    string cheie;
    do
    {
        while (f>>skipws>>ch)
            if (ch=='"')
                break;
        f>>noskipws>>ch;
        while (ch!='"')
        {
            cheie+=ch;
            f>>noskipws>>ch;
        }
        cheie+=',';
        g<<cheie;
        cheie.clear();
        while (f>>skipws>>ch)
            if (ch==',' || ch=='}')
                break;
    }while(ch!='}');
    g<<'\n';

}
void scrie_lin(fstream &f, fstream &g)
{
    char ch;
    int nr;
    string valoare;
    bool text;
    do
    {
        while (f>>skipws>>ch)
            if (ch==':')
                break;
        f>>skipws>>ch;
        text=0;
        if (ch=='"')
            text=1;
        if (text)
        {
            f>>noskipws>>ch;
            while (ch!='"')
            {
                valoare+=ch;
                f>>noskipws>>ch;
            }
            valoare+=',';
            f>>skipws>>ch;
        }
        else
        {
            valoare+=ch;
            f>>skipws>>ch;
            while (ch!=',' && ch!='}' )
            {
                if(ch!='\n' && ch!='\t')
                    valoare+=ch;
                f>>skipws>>ch;
            }
            valoare+=',';
        }
        g<<valoare;
        valoare.clear();
    }while (ch!='}');
    g<<'\n';
}
int main()
{
    char ch;
    fstream f,g;
    f.open("convertor.in",ios::in);
    g.open("convertor.out",ios::out);
    while (f>>ch)
        if (ch=='{')
            break;
    //scriem prima linie (cheile)
    prima_lin(f,g);
    f.seekg(0,ios::beg);
    while (f>>ch)
    {
        if (ch=='{')
            scrie_lin(f,g);//scriem valorile
        if (ch==']')
            break;
    }
    return 0;
}