Cod sursa(job #1355773)

Utilizator ard_procesoareLupicu ard_procesoare Data 22 februarie 2015 22:55:40
Problema Convertor Scor 70
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 1.71 kb
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
#define NMAX 9000000000
char sir[9000000007],aux[9000000007];
int nr;
ifstream fin("convertor.in");
ofstream fout("convertor.out");
void prima_linie()
{
    fin.getline(sir,NMAX,'}');
    strcpy(aux,sir);
    //fout<<sir[strlen(sir)-1];
   // fout<<sir<<endl;
    char * p;
    int i;
    p = strtok (sir,",");
    //p = strtok (NULL,",");
    while (p != NULL)
    {
        i=0;
        while(p[i++] != '"'); // cauta prima aparitie a ghilimelei
        while(p[i] != '\"') //afiseaza cuvantul cheie
        {
            fout<<p[i];
            i++;
        }
        fout<<',';
      //  fout<<p<<"@";
        p = strtok (NULL,",");
        //strtok pozitionat fix dupa virgula; la inceputul lui "p" va fi aflat urmatorul cuvant ce trebuie scris
        nr++; //cate chei am
    }
    //fout<<endl<<aux;
}
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';
        p = strtok (aux,":");
        p=strtok(NULL,":");
        while (p != NULL)
        {
            i=0;
            while(p[i++] != ' ');
            if(p[i] == '\"') //caz 1: valoarea e sir de caractere
                while(p[++i] != '\"')
                    fout<<p[i];
            else
                while(p[i] != ' ' && p[i] != ',')  //caz 2: valoarea e un numar
                    fout<<p[i++];
          //fout<<p;
            fout<<',';
            p = strtok (NULL,":");
        }
        linia1=0;
        fin.getline(aux,NMAX,'}');
    }
}
int main()
{
    prima_linie();
    celelalte_linii();
}