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

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

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

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

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

Есть программа которая считывает текст из файла и выводит только предложения,содержащие введенное с клавиатуры слово!!Помогите разобраться с кодом идущим со строчки
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2012, 00:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Комментарии к программе (C++):

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

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

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

Комментарии к программе - C++
------------------------------------------------------------------------------------------------- Условие: Удалить из массива последний...

Комментарии к программе - C++
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; /* оболочка strcmp(const char*, const char*) для функции qsort */ ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrCold
855 / 753 / 71
Регистрация: 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
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
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
Olechka1991
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
MrCold
855 / 753 / 71
Регистрация: 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
Olechka1991
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 90
13.05.2012, 14:15  [ТС] #6
а переменная fpos зачем?запоминает позицию?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 14:15
Привет! Вот еще темы с ответами:

комментарии к программе - C++
помогите пожалуйста!!! нужно написать комментарии вот к этой программе (нужны к каждой строчке) и еще подскажите эта программа рабочая? ...

Комментарии к программе на строки - C++
#include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;string&gt; using namespace std; int main() { string...

Нужны комментарии к программе - C++
Сама задача: &lt; символ &gt; : := &lt; буква &gt; | &lt; код &gt; | &lt; знак &gt; | &lt;разделитель&gt;| &lt; цифра &gt; &lt; знак &gt; : := v | -&gt; | + | * | ^ &lt;...

Напишите комментарии к программе - C++
здесь программа считает кол-во одинаковых цифр и их значение, мне нужно подробное описание шагов. #include &quot;stdafx.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2012, 14:15
Ответ Создать тему
Опции темы

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