Cod sursa(job #1340831)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 12 februarie 2015 04:20:22
Problema Convertor Scor 50
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 1.16 kb
#include <cstdio>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

#define FIN "convertor.in"
#define FOUT "convertor.out"

inline int is_whitespace(char c)
{
	return c < 33;
	//return c == ' ' || c == '\n' || c == '\t' || c == '\r';
}

int main()
{
	vector <string> headers, elements;
	string str;
	char c;
	int H, fline, i;

	freopen(FIN, "r", stdin);
	freopen(FOUT, "w", stdout);

	for (fline = 1; cin >> c; )
	{
		if (is_whitespace(c))
			continue;
		
		if (c == '"')
		{
			for (str.clear(), cin >> c; c != '"'; cin >> c)
				str.push_back(c);
		
			if (fline)
				headers.push_back(str);	
		}
		if (c == ':')
		{
			for (cin >> c; is_whitespace(c); cin >> c);

			if (c == '"')
				for (str.clear(), cin >> c; c != '"'; cin >> c)
					str.push_back(c);
			else
				for (str.clear(); c >= '0' && c <= '9'; cin >> c)
					str.push_back(c);

			elements.push_back(str);
		}
		if (c == '}')
			fline = 0;
		if (c == ']')
			break;
	}
	
	H = headers.size();
	for (i = 0; i < H; ++ i)
		printf("%s,", headers[i].c_str());
	for (i = 0; i < elements.size(); ++ i)
	{
		if (i % H == 0)
			printf("\n");
		printf("%s,", elements[i].c_str());
	}
	printf("\n");
}