Advertisement
DaniDori

Подсчет уникальных слов

Nov 15th, 2023
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4. #include <set>
  5.  
  6. int main() {
  7.     std::string input;
  8.  
  9.     // Ввод строки
  10.     std::cout << "Введите строку: ";
  11.     std::getline(std::cin, input);
  12.  
  13.     // Подсчет количества слов
  14.     std::istringstream wordStream(input);
  15.     std::string word;
  16.     int wordCount = 0;
  17.  
  18.     while (wordStream >> word) {
  19.         // Учитываем запятые внутри слов
  20.         size_t commaPos = word.find(',');
  21.         while (commaPos != std::string::npos) {
  22.             word.erase(commaPos, 1);
  23.             commaPos = word.find(',');
  24.         }
  25.  
  26.         // Учитываем запятые в конце слова
  27.         if (!word.empty() && (word.back() == ',' || word.back() == '.' || word.back() == '!' || word.back() == '?')) {
  28.             word.pop_back();
  29.         }
  30.  
  31.         if (!word.empty()) {
  32.             wordCount++;
  33.         }
  34.     }
  35.  
  36.     std::cout << "Количество слов: " << wordCount << std::endl;
  37.  
  38.     // Подсчет количества уникальных слов
  39.     std::istringstream wordStreamUnique(input);
  40.     std::set<std::string> uniqueWords;
  41.     std::string uniqueWord;
  42.  
  43.     while (wordStreamUnique >> uniqueWord) {
  44.         // Учитываем запятые внутри слов
  45.         size_t commaPos = uniqueWord.find(',');
  46.         while (commaPos != std::string::npos) {
  47.             uniqueWord.erase(commaPos, 1);
  48.             commaPos = uniqueWord.find(',');
  49.         }
  50.  
  51.         // Учитываем запятые в конце слова
  52.         if (!uniqueWord.empty() && (uniqueWord.back() == ',' || uniqueWord.back() == '.' || uniqueWord.back() == '!' || uniqueWord.back() == '?')) {
  53.             uniqueWord.pop_back();
  54.         }
  55.  
  56.         if (!uniqueWord.empty()) {
  57.             uniqueWords.insert(uniqueWord);
  58.         }
  59.     }
  60.  
  61.     std::cout << "Количество уникальных слов: " << uniqueWords.size() << std::endl;
  62.  
  63.     return 0;
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement