Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vanya995
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 3
#1

Объясните работу программы (вывод строки с указанием количества вхождений слова в строку) - C++

08.06.2013, 11:38. Просмотров 259. Ответов 0
Метки нет (Все метки)

Написать программу, которая считывает текст из файла и выводит его на экран, после каждого предложения добавляя, сколько раз встретилось в нем введенное с клавиатуры слово.

Дополн.: Создать файл word.txt и чтобы программа из него считывала текст.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
 
using namespace std;
 
static const char END_OF_SENTENCE = '.';
static const char* FILE_NAME = "word.txt";
 
bool isWordDelimiter(char ch)
{
   return (ch == ' ' || ch == '.' ||
           ch == ',' || ch == ':' ||
           ch == '!');
}
 
// Функция печатает количество слов in_word в предложении in_sentence.
void printSentence(const string& in_word, const string& in_sentence)
{
   // Количество слов
   int count = 0;
   // Позиция в строке (для поиска)
   size_t str_position = 0;
   // Пока есть слово в строке
   while ((str_position = in_sentence.find(in_word, str_position)) != string::npos)
   {
      bool beginOk = false;
      bool endOk = false;
 
      if (str_position == 0)
      {
         beginOk = true;
      }
      else
      {
         beginOk = isWordDelimiter(in_sentence[str_position - 1]);
      }
 
      if ((str_position + in_word.length()) == in_sentence.length())
      {
         endOk = true;
      }
      else
      {
         endOk = isWordDelimiter(in_sentence[str_position + in_word.length()]);
      }
 
      // Увеличиваем счетчик слов.
      if (endOk && beginOk)
      {
         ++count;
      }
      // Увеличиваем позицию для поиска.
      str_position += in_word.length();
   }
   // Выводим предложение, и количество слов.
   cout << in_sentence << " " << count << endl;
}
 
int main()
{
   // Просим ввести слово.
   cout << "Enter the word, please:" << endl;
   string word;
   cin >> word;
 
   ifstream fin(FILE_NAME, ios::in);
   if (!fin)
   {
      cout << "Can't open file: " << FILE_NAME << endl;
      return 1;
   }
 
   char ch;
   string currentSentence;
   while (fin.get(ch))
   {
      if (ch != END_OF_SENTENCE)
      {
         // Если это не конец предложения, то читаем дальше.
         currentSentence.push_back(ch);
      }
      else
      {
         // Если конец предложения
         printSentence(word, currentSentence);
         currentSentence.clear();
      }
   }
   fin.close();
   
   ::system("pause");
   
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 11:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объясните работу программы (вывод строки с указанием количества вхождений слова в строку) (C++):

Вывод числа вхождений каждого из символов первой строки во вторую строку - C++
Вопрос в названии темы, заранее спс

Подсчитать количество вхождений слова «мама» в строку и вывести номера первых позиций этих вхождений - C++
Помогите исправить ошибку. Как вывести номера первых позиций вхождений слова мама? Подсчитать количество вхождений слова «мама» в строку...

Объясните работу программы - C++
Есть программа с рекурсивной функцией, которая меняет порядок значениий в массиве наоборот. Объясните, пожалуйста, как она это делает ...

Даны две строки: S и S0. Определить количество вхождений строки S0 в строку S - C++
Даны две строки: S и S0. Определить количество вхождений строки S0 в строку S.

c++ Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1. - C++
Очень надеюсь на помощь

Даны строки s, s0. Найти количество вхождений строки s0 в строку s - C++
Даны строки s, s0. Найти количество вхождений строки s0 в строку s.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 11:38
Привет! Вот еще темы с ответами:

Определить количество вхождений каждого слова в заданную строку - C++
заданная строка. определить количество вхождения каждого слова в заданую строку. помогите,а то не могу понять почему не правельно...

Подсчитать количество вхождений введенного с клавиатуры слова в строку - C++
собственно, сабж...помогите с задачкой, пожалуйста

Объясните строку в программе нахождения количества различных элементов массива - C++
Объясните одну строчку в программе: set&lt;int&gt; s((int*)a, (int*)a + row); #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Количество вхождений строки S2 в строку S1 - C++
Строки S1 и S2 вводятся с клавиатуры. Определить является ли строка S2 подстрокой строки S1. Если да, то подсчитать количество вхождений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru