Pagini recente » Cod sursa (job #43735) | Cod sursa (job #3163479) | Cod sursa (job #117354) | Cod sursa (job #22827) | Cod sursa (job #1359753)
# 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;
}