1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 90
1

Комментарии к программе

13.05.2012, 00:10. Показов 672. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа которая считывает текст из файла и выводит только предложения,содержащие введенное с клавиатуры слово!!Помогите разобраться с кодом идущим со строчки
C++
1
std::ifstream in("file.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
include <iostream>
#include <fstream>
#include <string>
#include <ctype.h>
 #include <conio.h>
   #include <windows>
using namespace std;
int main()
{  
SetConsoleCP(1251);
SetConsoleOutputCP(1251);        
     size_t fpos = 0, loop = 0;
         string str,word;
         char S;
         cout << "Введите слово для поиска\n";
         cin >> word;
         std::ifstream in("file.txt");
   if (in)   { 
         in.unsetf(std::ios::skipws);
   while(in >>  S) {
         str += S;
        if(S == '.'|| S == '!' || S == '?'){
        fpos = str.find(word);
  if    (std::string::npos != fpos 
         && !isalpha(str[fpos - 1])
         &&!isalpha(str[fpos + word.length()]))
     {
         std::cout << str << std::endl;
         loop++;
     }   str.clear();
        } } }
  else
      std::cerr<< "Error in opening file\n";
  if(!loop) std::cout << "Not found !\n";  
  in.close();
     getch();
     return 0;
     }
Добавлено через 2 часа 24 минуты
что делает вот эта часть кода?
C++
1
2
3
4
5
6
7
8
 if    (string::npos != fpos
         && !isalpha(str[fpos - 1])
         &&!isalpha(str[fpos + word.length()]))
     {
         cout << str << std::endl;
         loop++;
     }   str.clear();
        } } }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2012, 00:10
Ответы с готовыми решениями:

комментарии к программе
можно написать построчные комментарии к программе? #include &lt;stdio.h&gt; #include &lt;conio.h&gt;...

Комментарии к программе
нужна помощь с комментариями, желательно к каждой строчке #include &lt;stdio.h&gt; /*Подключение...

Комментарии к программе
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; /* оболочка strcmp(const char*,...

Комментарии к программе
-------------------------------------------------------------------------------------------------...

5
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
13.05.2012, 00:33 2
C++
1
2
3
4
5
6
7
8
9
if    (string::npos != fpos       // если подстрока найдена  в строке 
         && !isalpha(str[fpos - 1])   // если перед  подстрокой  есть пробел, запятая и т.д.
         &&!isalpha(str[fpos + word.length()]))   // если в конце подстроки есть пробел, запятая и т.д.
//  то есть реально  найденное слово :
     {
         cout << str << std::endl; // вывод строки 
         loop++;   // плюсуем метку   
     }   str.clear();  // обнулить  строку
        } } }
Добавлено через 1 минуту
код - это моё творчество, так что спрашивайте
0
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
13.05.2012, 00:34 3
Как-то так:
Цитата Сообщение от Olechka1991 Посмотреть сообщение
C++
1
2
3
4
5
6
7
if (string::npos != fpos                // если подстрока найдена
    && !isalpha(str[fpos - 1])            // и симол перед подстрокой не буква
    &&!isalpha(str[fpos + word.length()]))    // и символ после подстроки не буква
{                                                         
    cout << str << std::endl;            // выводим строку
    loop++;                      // инкремент счётчика
}
0
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 90
13.05.2012, 10:12  [ТС] 4
C++
1
2
3
4
if    (string::npos != fpos       // если подстрока найдена  в строке 
         && !isalpha(str[fpos - 1])   // если перед  подстрокой  есть пробел, запятая и т.д.
         &&!isalpha(str[fpos + word.length()]))   // если в конце подстроки есть пробел, запятая и т.д.
//  то есть реально  найденное слово :
а зачем вообще нужно проеверять на наличие проблема и т д перед подстрокой?

Добавлено через 32 минуты
и для чего переменная loop нужна?
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
13.05.2012, 11:13 5
Цитата Сообщение от Olechka1991 Посмотреть сообщение
и для чего переменная loop нужна?
Цитата Сообщение от Olechka1991 Посмотреть сообщение
f(!loop) std::cout << "Not found !\n";
Если переменная LOOP == 0 , то таких слов нет !!

Цитата Сообщение от Olechka1991 Посмотреть сообщение
fpos = str.find(word);
Цитата Сообщение от Olechka1991 Посмотреть сообщение
а зачем вообще нужно проеверять на наличие проблема и т д перед подстрокой?
Потому что функция FIND ищет подстроку, а не слово в отдельности,
нужно убедиться в наличии разделителей
0
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 90
13.05.2012, 14:15  [ТС] 6
а переменная fpos зачем?запоминает позицию?
0
13.05.2012, 14:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2012, 14:15
Помогаю со студенческими работами здесь

комментарии к программе
помогите пожалуйста!!! нужно написать комментарии вот к этой программе (нужны к каждой строчке) и...

Комментарии к программе
Здраствуйте. Напишите, пожалуйста, комментарии к строкам, где этих комментариев нет. У меня брат -...

Комментарии к программе
привет всем. помогите, пожалуйста, разобраться в работе программы. вот код #include &lt;iostream&gt;...

Нужны комментарии к программе
#include &lt;cmath&gt; #include &lt;iomanip&gt; #include &lt;iostream&gt; using namespace std; int fact(int i) {...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru