Cod sursa(job #1359753)

Utilizator codrut_grosuGrosu Codrut-Cristian codrut_grosu Data 25 februarie 2015 02:02:42
Problema Convertor Scor 0
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 3.02 kb
# include <iostream>
# include <fstream>
# include <string>
# include <vector>
# include <sstream>
# include <algorithm>
# include <iterator>
# include <sstream>


std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
    std::stringstream ss(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}

std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, elems);
    return elems;
}

bool BothAreSpaces(char lhs, char rhs) {

	return (lhs == rhs) && (lhs == ' ');
	
}

int what ( std :: string sir ) {

	std :: string const paranteza_deschisa ("[");
	std :: string const paranteza_inchisa ("]");
	std :: string const acolada_deschisa ("{");
	std :: string const acolada_inchisa ("}");

	if ( sir.find(paranteza_deschisa) != std :: string :: npos) {

		if ( sir.find(acolada_deschisa) != std :: string :: npos) {
		
			// am acolada si paranteza deschisa
			return 1;
		
		}

		return 0;
		// am doar paranteza deschisa
	
	} else if ( sir.find(acolada_deschisa) != std :: string :: npos ) {
	
		if ( sir.find(acolada_inchisa) != std :: string :: npos ) {
		
			// am acolada inchisa si deschisa
			return 3;
		
		}
	
		// am doar acolada deschisa
		return 2;
	
	} else if ( sir.find(acolada_inchisa) != std :: string :: npos ) {
	
		if ( sir.find(paranteza_inchisa) != std :: string :: npos ) {
		
			// am acolada inchisa si paranteza inchisa
			return 5;
			
		}
	
		// am doar acolada inchisa
		return 4;
	
	} else if ( sir.find(paranteza_inchisa) != std :: string :: npos ) {
	
		// am doar paranteza inchisa
		return 6;
	}
	
	return -1;

}


int main () {

	std :: ifstream f ("convertor.in");
	std :: ofstream g ("convertor.out");

	// constante :

	std :: string const paranteza_deschisa ("[");
	std :: string const paranteza_inchisa ("]");
	std :: string const acolada_deschisa ("{");
	std :: string const acolada_inchisa ("}");

	// variabile

	std :: pair <std :: string,std :: vector <std :: string> > hashTable;
	std :: vector <std :: string > spart;
	std :: string myWord;
	std :: vector < std :: string > cuvinte ;
	bool for_ever = true;
	int i = 0;

	while ( for_ever == true ) {

		std :: getline ( f, myWord );
		std :: size_t pos = myWord.find(paranteza_inchisa);
		if ( pos != std :: string :: npos ) {

			for_ever = false;

		}

		// _start_prelucrare_linie

		std::string::iterator new_end = std::unique(myWord.begin(), myWord.end(), BothAreSpaces);
		myWord.erase(new_end, myWord.end());
		spart = split ( myWord, '"' );
     
     	for (int j = 0; j < spart.size(); j ++ ) {
     		
     		if ( spart[j].size() > 0 && ! ( spart[j].size() == 1 && spart[j] == " " )) {
     		
 	    		cuvinte.push_back ( spart[j] );

 	    	}
     	}
		
		// _end_prelucrare_linie

	}


	// eu am toate cuvintele intr-un vector

	for ( i = 0 ; i < cuvinte.size() ; i ++ ) {
	
		//g << what(cuvinte[i]) << "-----------" << cuvinte[i] << "-----------" << '\n';
	
	}

	f.close ();
	g.close ();
	return 0;
}