Cod sursa(job #1334212)

Utilizator palcuiealexAlex Palcuie palcuiealex Data 4 februarie 2015 01:23:14
Problema Convertor Scor Ascuns
Compilator cpp Status done
Runda Marime 2.01 kb
// Sursa Adei cu citire din stdio
// Scrierea inca e cu streamuri
#include <fstream>
#include <string>
#include <cstdio>

using namespace std;

int main() {
    ofstream g;
    FILE * pIn = fopen("convertor.in", "r");
    g.open("convertor.out");

    // identificare chei
    char c;
    string buffer;
    int pos;
    int state = 0;
    while ((c = fgetc(pIn)) && c != EOF && (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";
    fseek(pIn, 0, SEEK_END);
    rewind(pIn);
    state = 0;
    while ((c = fgetc(pIn)) && c != EOF && (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;
    }
    return 0;
}