Advertisement
TwITe

Untitled

Aug 21st, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <algorithm>
  5. #include <set>
  6. #include <unordered_set>
  7. using namespace std;
  8.  
  9. bool check_word(string word, unordered_set <string>& dict, unordered_set <string>& lower_case_dict) {
  10.  
  11.     if (dict.find(word) != dict.end()) {
  12.         return true;
  13.     }
  14.     string lower_case_word = word;
  15.     transform(lower_case_word.begin(), lower_case_word.end(), lower_case_word.begin(), ::tolower);
  16.     if (lower_case_dict.find(lower_case_word) != lower_case_dict.end()) {
  17.         return false;
  18.     }
  19.     int upper_char = 0;
  20.     if (dict.find(word) == dict.end()) {
  21.         const char* char_word = word.c_str();
  22.         for (int i = 0; i < word.length(); i++) {
  23.             if (char_word[i] == toupper(tolower(char_word[i]))) {
  24.                 upper_char++;
  25.             }
  26.         }
  27.     }
  28.     if (upper_char != 1) {
  29.         return false;
  30.     }
  31.     return true;
  32. }
  33.  
  34. void task9() {
  35.     int n;
  36.     cin >> n;
  37.     unordered_set <string> dict;
  38.     for (int i = 0; i < n; i++) {
  39.         string word;
  40.         cin >> word;
  41.         dict.insert(word);
  42.     }
  43.     unordered_set <string> lower_case_dict;
  44.     for (auto word : dict) {
  45.         transform(word.begin(), word.end(), word.begin(), ::tolower);
  46.         lower_case_dict.insert(word);
  47.     }
  48.     cin.ignore();
  49.     string sentence;
  50.     getline (cin, sentence);
  51.     istringstream stream(sentence);
  52.     string word;
  53.     int wrong_words_count = 0;
  54.     while (stream >> word) {
  55.         if (!(check_word(word, dict, lower_case_dict))) {
  56.             wrong_words_count++;
  57.         }
  58.     }
  59.     cout << wrong_words_count;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement