Cod sursa(job #1355866)

Utilizator ard_procesoareLupicu ard_procesoare Data 22 februarie 2015 23:43:04
Problema Convertor Scor 100
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 1.78 kb
#include <fstream>
#include <string.h>
using namespace std;
#define NMAX 9000000
char sir[9000007],aux[9000007]; //just in case.
ifstream fin("convertor.in");
ofstream fout("convertor.out");
void prima_linie()
{
    fin.getline(sir,NMAX,'}'); //ma opresc cu citirea sirului cand am gasit "}"
    strcpy(aux,sir);
    char * p;
    int i;
    p=strchr(sir,'\"');
    while (p != NULL)
    {
        i=p-sir;
        while(sir[i++] != '"'); // cauta prima aparitie a ghilimelei
        while(sir[i] != '\"') //afiseaza cuvantul cheie
        {
            fout<<sir[i];
            i++;
        }
        fout<<',';
        p=strchr(p+1,','); //cauta urmatoarea pozitie a lui "," in sirul citit

    }
}
void celelalte_linii()
{
    char * p;
    int i, linia1=1; //linia1 retine daca am afisat linia 1 (1) sau nu (0)
    while(linia1 || !fin.eof())
    {
        fout<<'\n'; //urmeaza o noua structura,deci rand nou
        p=strchr(aux,':'); //cauta pozitia lui ":" in sir
        while (p != NULL)
        {
            i=p-aux+1; //aux[i] = urmatorul element aflat dupa caracterul ":" gasit
            while(aux[i] == ' ' || aux[i] == '\n') i++; //cauta valoarea,ignorand spatii sau randuri noi
            if(aux[i] == '\"') //caz 1: valoarea e sir de caractere
                while(aux[++i] != '\"')
                    fout<<aux[i];
            else
                while(aux[i] == '-' || (aux[i] >='0' && aux[i]<='9') ) //caz 2: valoarea e un numar
                    fout<<aux[i++];
            fout<<',';
            p=strchr(p+1,':'); //caut urmatorul ":" din sir
        }
        linia1=0;
        fin.getline(aux,NMAX,'}'); //citesc o noua structura (ma opresc la gasirea lui "}")
    }
}
int main()
{
    prima_linie();
    celelalte_linii();
}