SHARE
TWEET

Ex. 8.4 (1)

daniil_mironoff May 23rd, 2019 95 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ЗАДАНИЕ 8.4 (1)
  2. // Даны файл, содержащий текст, и некоторые буквы.
  3. // Найти слово, содержащее наибольшее количество указанных букв.
  4.  
  5. #include <iostream>  // Для ВЫВОДА (и ввода)
  6. #include <string>    // Для СТРОК
  7. #include <fstream>   // Для ФАЙЛОВ
  8.  
  9. using namespace std; // Пространство имён
  10.  
  11. int main() {
  12.     string line;     // Хранит текущую строку (для записи в весь текст)
  13.     string text;     // Хранит весь текст файла
  14.  
  15.     // Ввод названия файла
  16.     string name_file;
  17.     cout << "Enter name file (format: name.txt): ";
  18.     cin  >> name_file;
  19.  
  20.     // Открытие файла
  21.     ifstream myfile (name_file);
  22.  
  23.     //  Подсчет и запись строк
  24.     while (! myfile.eof() ) {
  25.         getline(myfile, line);  // Чтение строки
  26.         text += line + " ";     // Запись в одну переменную
  27.     }
  28.  
  29.      // Закрытие файла
  30.     myfile.close();
  31.  
  32.     // Ввод искомой буквы
  33.     char character;
  34.     cout << "Enter search character: "; cin >> character;
  35.    
  36.     // Приравниваем Заглавные к Прописным
  37.     if (character < 91) {
  38.         character += 32;
  39.     }
  40.  
  41.     // Счетчик символов в слове (для записи слова в string)
  42.     int k = 0;
  43.    
  44.     // Счетчик искомых символов в слове
  45.     int count = 0;
  46.     // Хранит текущее слово
  47.     string word = "";
  48.     word.resize(text.length());
  49.    
  50.     // Максимальное значение
  51.     int max = 0;
  52.     // Хранит слово максимума
  53.     string max_word = "";
  54.    
  55.  
  56.     // Перебор символов вводимой строки
  57.     for (int i = 0; text.length() > i; i++) {
  58.         // Если это не буква
  59.         if (text[i] < 65 || text[i] > 122 || (text[i] > 90 && text[i] < 97)) {
  60.             // Если последняя последовательность
  61.             // была больше наибольшей предыдущей
  62.             if (count > max) {
  63.                 max_word = word;
  64.                 max      = count;
  65.             }
  66.            
  67.             word  = "";
  68.             word.resize(text.length() - i);
  69.            
  70.             count = 0;
  71.             k     = 0;
  72.             continue;
  73.         }
  74.        
  75.         word[k] = text[i];
  76.         k++;
  77.        
  78.         // Если искомый символ совпадает с текущим
  79.         if ((text[i] == character) || (text[i] + 32 == character)) {
  80.             count++;
  81.         }
  82.  
  83.         // Если это последняя буква в тексте
  84.         if (i + 1 == text.length()) {
  85.             // И последнее слово оказалось max
  86.             if (count > max) {
  87.                 max_word = word;
  88.                 max      = count;
  89.             }
  90.         }
  91.     }
  92.  
  93.     cout << "Result: " << max_word << endl;
  94.    
  95.     return 0;
  96. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top