Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //TP 2018/2019: Zadaća 3, Zadatak 2
- #include <iostream>
- #include <string>
- #include <map>
- #include <set>
- #include <cctype>
- std::string PretvoriuMala (std::string s) {
- for (int i = 0; i < s.size(); i++) {
- if (isupper(s.at(i)));
- s.at(i)=tolower(s.at(i));
- }
- return s;
- }
- bool JesteSlovo (char c) {
- if(('a' <= c && c <= 'z') || ( 'A' <= c && c <= 'Z') || ('0' <= c && c <= '9'))return true;
- return false;
- }
- std::map<std::string, std::set<int>> KreirajIndeksPojmova (std::string s) {
- /* while (it != s.end()) {
- //auto indeks=it;
- if(JesteSlovo(*it)) {
- // indeks = it;
- rijec += *it;
- it++;
- // std::cout << rijec << " ";
- }
- mapa["rijec"].insert(it - s.begin());
- }*/
- std::map <std::string, std::set<int>> mapa;
- auto it = s.begin();
- std::string rijec;
- while (it != s.end()) {
- //if (JesteSlovo(*it)) {
- // bool nije_slovo = true;
- //if (!(JesteSlovo(*it))) nije_slovo = true;
- //else if (nije_slovo == true) {
- //nije_slovo = false;
- if (JesteSlovo(*it)) {
- auto iter = it;
- while (iter != s.end() && JesteSlovo(*iter)) {
- iter++;
- }
- std::string rijec = s.substr(it - s.begin(), iter - it);
- mapa[rijec].insert(it - s.begin());
- /* if(m.find(rijec) != m.end()){
- prevod += m[rijec];
- }
- else{
- prevod += rijec;
- }*/
- it = iter;
- it--;
- }
- it++;
- }
- return mapa;
- }
- std::set<int> PretraziIndeksPojmova (std::string rijec, std::map<std::string, std::set<int>> mapa) {
- if (!mapa.count(rijec)) {
- throw std::logic_error ("Pojam nije nadjen");
- }
- // std::set<int> set;
- return mapa [rijec];
- }
- void IspisiIndeksPojmova ( std::map<std::string, std::set<int>> mapa) {
- auto iter = mapa.begin();
- for (iter = mapa.begin(); iter!= mapa.end(); iter ++){
- std::cout << iter -> first << ": ";
- // for (auto x : iter->first) std::cout << x << " ";
- auto it = (iter -> second).begin();
- // for (auto x : iter -> second) std::cout << x;
- for (int i = 0; i < (iter -> second).size(); i++) {
- std::cout <<*it;
- // for (auto x : iter -> second) std::cout << x;
- if (i < (iter -> second).size()-1) std::cout << ",";
- it++;
- }
- std::cout << std::endl;
- }
- }
- // auto it = (iter -> second).begin();
- /* for (int i = 0; i < (iter -> second).size(); i++) {
- std::cout << *it;
- if (i < (iter -> second).size()-1) std::cout << ",";
- it++;
- }
- std::cout << std::endl;
- }
- }
- */
- /*for (int x : (iter->second)) std::cout << x << ",";
- std::cout << std::endl;
- }
- }
- */
- int main ()
- {
- std::cout << "Unesite tekst: ";
- // std::string s {"abc qwe stsda abc abc dhi qwe hrkw dhi"};
- std::string tekst;
- std::getline (std::cin, tekst);
- auto mapa = KreirajIndeksPojmova(tekst);
- IspisiIndeksPojmova(mapa);
- /*std::cout << "Unesite rijec: ";
- std::string rijec;*/
- //do {
- //std::cin >> rijec;
- //if (rijec == ".") return 0;
- //auto m = PretraziIndeksPojmova(rijec, mapa);
- //if (m.empty()) std::cout << "\nUnesena rijec nije nadjena!";
- //for(auto it = m.begin(); it!= m.end(); it++) {
- // std::cout << *it << " ";
- //}
- //}
- //while (rijec!= ".");
- std::set<int> s;
- std::string mali;
- std::getline(std::cin, mali);
- s=PretraziIndeksPojmova(mali, mapa);
- for (int x:s) std::cout << x << " ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement