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

Поиск в тексте фрагментов (по заданному шаблону) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ qreport - qrdbrichtext в CBuilder'е http://www.cyberforum.ru/cpp-beginners/thread460848.html
никто не сталкивался с такой проблемой? qrdbrichtext - не отображает данные из базы. с qrdbtext - всё в порядке. это баг CBuilder'а 5.0 или у меня руки кривые?
C++ Поиск одинаковых фраз в тексте Привет all. Надобно реализовать в текстовом редакторе такую фичу. Сделать поиск чтоб проверялся весь текст на наличие одинаковых фраз и как результат ввыводился список найденых. Помогите плиз... http://www.cyberforum.ru/cpp-beginners/thread460819.html
C++ Как подключить кирилицу в VC
Пишу на VC программу. Вставляю в диалоговом окне надписи на русском языке. После компиляции запускаю программу, а мне выводит вместо русского текста разную аброкадабру. Напишите как с этим...
Как заставить программу не выгружаться из памяти и работать дальше? C++
Возьмем банальный пример клавиатурный шпион или чтонить в этом роде... Проект Win32 application я разместил в конце ВинМайн цикл стандартный сообщений... в принципе это сработало, но учитывая то...
C++ Шибка в member function без реализации http://www.cyberforum.ru/cpp-beginners/thread460763.html
При линковании появляется ошибка PropssheetView.obj : error LNK2001: unresolved external symbol 'protected: void __thiscall CPropssheetView::OnShowtreeview(void)'...
C++ Можно ли закомментировать блок, как в VB? Спасибо! подробнее

Показать сообщение отдельно
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
03.10.2007, 01:39  [ТС]
Спасибо за ответ!Как тут применить рекурсивный алгоритм? А у меня была другая идея. Вот тут у меня возникли проблемы. Сказали что
текст невозможно прочитать:
Данная программа передаёт в конечный файл любую лексемму, которая следует за взятым из шаблона словом
Как и требовалось это тоже набросок программы, и он нуждается в проработке. Помимо явных
ошибок в ней можно доработать некоторые детали.Например избавиться от глобальных переменных,и т.д.
Но в целом идея программы хорошо подходит под решение задач подобных этой.

Вот набросок программы:
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
#include <stdio.h>                    //подключение стандартных библиотек 
#include <string.h> 
int tmp1,tmp2,tmp3;
void montag_lexemmi()                 //Функция монтажа лексеммы из части шаблона 
{
  int i=1;                      
  while(ispunct(str2[i])!=1)         //пока в строке нет знака пунктуации('№;%:?*(){}[] и т.д.)   
  {
    i++; 
    ch=str2[i];                      //пишет символы в строку-лексемму
    lexemma=lexemma+ch;
  }
  tmp3=strlen(shablon);
}
void main() //тело программы 
{
FILE *opn,*cls;                      //Объявление указателя на файл (специальный тип данных)
string str1='';                      //Временный буфер-строка для хранения очередной считываемой строки из иссл.файла
       str2='';                      //Буфер-строка для хранения шаблона
       str_x='';                     //Временный буфер-строка для хранения очередной строки-результата 
       lexemma='';                   //Временный буфер-строка для хранения выделенной из шаблона лексеммы(например 'Имя') 
       maska='';                     //Строка-маска для проверки совпадения лексемм
char   ch[10];                                //Временный буфер-символьный массив для хранения лексеммы,подходящей по условию
opn=fopen('Исследуемый файл','Режим чтения'); //открытие файла
cls=fopen('Файл-таблица','Режим записи');     //открытие файла-базы данных 
fputs('Имя.Фамилия.Отчество.',Файл-таблица)   //запись в файл-базу данных первой строки(как задано в условии)
if(opn!=NULL) puts('Ошибка открытия файла');  //сообщение об ошибке если файл пустой
fgets(str1,opn);                              //копирование во временный буфер-строку первой строки иссл.файла 
strcpy(str2,'шаблон');                        //Копирование набора символов-заданного пользователем 
                                              //шаблона в строку для работы с ним
tmp2=strlen(str2);                            //Вычисление длины строки-шаблона
tmp1=strlen(str1);                            //Вычисление длины строки, взятой из файла для работы с ней 
do                                            //начало цикла исследования
{
 montag_lexemmi();                           //применение функции монтажа лексеммы (с чем сравнивать) 
 for(j=1;1<tmp1;j++)                         //цикл движения по строке
  {
    for(i=1;i<tmp3;i++)                      //Формирование строки-маски из элементов исследуемой строки
      {                                      //размером в tmp3 символов 
       ch=str2[i];                           //присваивание i-того элемента строки временной переменной
       maska=maska+ch;                       //...и так далее 
      }
    if(maska==lexemma)                       //Самое интересное: если маска совпадает с лексеммой
    i=tmp3;
    while(ispunct(str1[i])!=1)               //пока в строке нет знака пунктуации('№;%:?*(){}[] и т.д.)  
       {
         i++;                                //счётчик цикла
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru