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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Пожалуйста объясните работу программы http://www.cyberforum.ru/cpp-beginners/thread895185.html
#include <iostream> #include <iomanip> int main() { int n; std::cin >> n;//пространство имен float** arr = new float* ; float max; int i_max, j_max; //функция принимает два аргумента и возращает их мах.значение
C++ Перегрузка функции(Создать класс Vector – вектор.) Создать класс Vector – вектор, используя динамическую память. Определить операторы "+" – поэлементное сложения векторов, "-" – поэлементное вычитание векторов, "=" – присваивания, как методы класса. Определить операторы сравнения "==", "!=", "<", ">", как дружественные функции. Для реализации последних двух операторов определить функцию, вычисляющую норму элементов... http://www.cyberforum.ru/cpp-beginners/thread895183.html
C++ error C2106: '=' : left operand must be l-value выдаёт ошибку на сортировку
#include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main() { setlocale(LC_ALL, "Russian"); int N,i,Buf;
Записать строки исходного файла в выходной файл в порядке возрастания длины строки C++
Ребят, не получается осилить программу. Все равно ошибки выдает Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки.
C++ Найти количество листьев в дереве http://www.cyberforum.ru/cpp-beginners/thread895171.html
Добрый день. Помогите с заданиями, вообще не пойму как их делать, а их срочно нужно сделать: 3)Дерево: Тип информационного поля double. Найти количество листьев в дереве. это все надо не в динамике делать. Зарание спасибо.
C++ Добавить в список элемент с заданным номером Добрый день. Помогите с заданиями, вообще не пойму как их делать, а их срочно нужно сделать: 2) двунаправленый список: Тип информационного поля char*. Добавить в список элемент с заданным номером. это все надо не в динамике делать. Зарание спасибо. подробнее

Показать сообщение отдельно
Vanya995
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 3
08.06.2013, 11:38     Объясните работу программы (вывод строки с указанием количества вхождений слова в строку)
Написать программу, которая считывает текст из файла и выводит его на экран, после каждого предложения добавляя, сколько раз встретилось в нем введенное с клавиатуры слово.

Дополн.: Создать файл 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru