Cod sursa(job #1365028)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 27 februarie 2015 23:27:13
Problema Convertor Scor 100
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 1.97 kb
// http://www.infoarena.ro/problema/convertor
#include <fstream>
#include <string>
using namespace std;
int main() {
    ifstream f;
    ofstream g;
    f.open("convertor.in");
    g.open("convertor.out");
    // identificare chei
    char c;
    string buffer;
    int state = 0;
    while ((f.get(c)) && (c!='}')) { 
        if ((c == '[') && (state == 0))
            state = 1;
        else if ((c == '{') && (state == 1))
            state = 2;
        else if ((c == '\"') && (state == 2))
            state = 3;
        else if ((c == '\"') && (state == 3)) {
            state = 2;
            g << buffer << ",";
            buffer = "";
        } else if ((c == ':') && (state == 2)) 
            state = 4;
        else if ((c == ',') && (state == 4))
            state = 2;
        else if (state == 3) 
            buffer += c;
    }
    g<<"\n";
    // identificare valori
    f.seekg(0, ios::beg);
    state = 0;
    while ((f.get(c)) && (c!=']')) {
        if ((c == '[') && (state == 0))
            state = 1;
        else if ((c == '{') && (state == 1))
            state = 2;
        else if ((c == '\"') && (state == 2)) 
            state = 3;
        else if ((c == '\"') && (state == 3))
            state = 2;
        else if ((c == ':') && (state == 2))
            state = 4;
        else if ((c == '\"') && (state == 4))
            state = 5;
        else if ((c == '\"') && (state == 5)) 
            state = 4;
        else if ((c == ',') && (state == 4)) {
            state = 2;
            g << buffer << ",";
            buffer = "";
        } else if ((c == '}') && (state == 4)) {
            state = 1;
            g << buffer << ",";
            buffer = "";
        } else if ((c == '}') && (state == 2))
            state = 1;
        else if ((c == ',') && (state == 1))
            g << "\n";
        else if (state == 5)
            buffer += c;
        else if ((isdigit(c)) && (state == 4))
            buffer += c;
    }
    f.close();
    g.close();
    return 0;
}