Cod sursa(job #1338090)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 9 februarie 2015 19:38:36
Problema Convertor Scor 100
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 2.2 kb
#include <fstream>
#include <iostream>
#include <cstdio>
#include <cstring>
#define LG 3000000
using namespace std;
char buffer[LG];
int ns;

int main()
{
    string s;
    int poz = 0;
    freopen("convertor.in", "r", stdin);
    freopen("convertor.out", "w", stdout);
    fread(buffer, 1, LG, stdin);
    ns = strlen(buffer);

    /// aici printez header-ul de la CSV
    while(buffer[poz] != '"')
        poz++;
    while(buffer[poz] != '}')
    {
        poz++;
        s.clear();
        while(buffer[poz] != '"')
        {
            s += buffer[poz];
            poz++;
        }
        poz++;
        cout << s << ",";
        while(!('0' <= buffer[poz] && buffer[poz] <= '9') && buffer[poz] != '"')
            poz++;
        if(buffer[poz] == '"')
        {
            poz++;
            while(buffer[poz] != '"')
                poz++;
            poz++;
        }
        else
        {
            while('0' <= buffer[poz] && buffer[poz] <= '9')
                poz++;
        }
        while(buffer[poz] != '}' && buffer[poz] != '"')
            poz++;
    }
    cout << "\n";

    /// acum continutul in sine
    poz = 0;
    while(poz < ns)
    {
        while(poz < ns && buffer[poz] != '{')
            poz++;
        if(poz == ns)
            break;
        s.clear();
        while(buffer[poz] != '}')
        {
            while(buffer[poz] != '}' && buffer[poz] != '"')
                poz++;
            if(buffer[poz] == '}')
                break;
            poz++;
            while(buffer[poz] != '"')
                poz++;
            poz++;
            while(!('0' <= buffer[poz] && buffer[poz] <= '9') && buffer[poz] != '"')
                poz++;
            if(buffer[poz] == '"')
            {
                poz++;
                while(buffer[poz] != '"')
                {
                    s += buffer[poz];
                    poz++;
                }
                s += ",";
                poz++;
            }
            else
            {
                while('0' <= buffer[poz] && buffer[poz] <= '9')
                {
                    s += buffer[poz];
                    poz++;
                }
                s += ",";
            }
        }
        cout << s << "\n";
    }
    return 0;
}