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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
22.09.2007, 00:59     Поиск в тексте фрагментов (по заданному шаблону) #1
поиск в тексте фрагментов (по заданному шаблону)
и запись их в таблицу хотя бы алгоритм за задницу ухватить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2007, 00:59     Поиск в тексте фрагментов (по заданному шаблону)
Посмотрите здесь:

C++ Поиск по шаблону * и?
C++ Поиск слова в тексте.
Поиск в тексте C++
C++ Поиск слова в тексте
C++ Поиск по шаблону
C++ Поиск букв в тексте
Поиск строки в файле по заданному слову C++
C++ Контейнер map. Поиск по заданному ключу
Создать матрицу по заданному шаблону C++
C++ Класс ATC, реализовать сортировку и поиск по заданному ключу
Поиск в элементов в таблице по заданному ключу C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
skaa
Сообщений: n/a
02.10.2007, 00:54     Поиск в тексте фрагментов (по заданному шаблону) #2
А по какому шаблону? Типа 'AB??E' должен находить строки 'ABCDE', 'ABXYE' и т.д.? Если так, то надо читать текст например для данного примера по 5 символов начиная с первого и заканчивая (количество_символов_в_тексте-5)-м символом, заменять в прочитанном фрагменте символы с номерами 2 и 3 на вопросительный знак и сравнивать с 'AB??E'. Если я правильно понял, могу выслать кусок программы. Я в этом форуме ежедневно.
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
02.10.2007, 02:32  [ТС]     Поиск в тексте фрагментов (по заданному шаблону) #3
Спасибо за ответ но контора которой было нужно это решение оказалась слегка быковатой. У меня возникла примерно такая же идея только там
посложнее будет. Представляешь им было в лом прочитать текст программы которую я им послал.
Ругаются что текст кода нечитаемый я так и не понял что им надо было.Наверное чтобы как в букваре.
Лучше поделись опытом как найти работу программисту? Если хошь пиши
nikolaimay@mail.ru
p.s.Я как-бы новичок в этом деле но страсть какой догадливый!!!
maximf
0 / 0 / 0
Регистрация: 29.06.2007
Сообщений: 50
02.10.2007, 13:27     Поиск в тексте фрагментов (по заданному шаблону) #4
Задача поиска по шаблону решается обычно с помощью регулярных выражений.
Для построения парсера существует множество методов (и толстенные учебники, типа Ахо и Ульмана). Проще всего написать рекурсивный алгоритм. Думаю, в интенете должна быть куча примеров.
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
03.10.2007, 01:39  [ТС]     Поиск в тексте фрагментов (по заданному шаблону) #5
Спасибо за ответ!Как тут применить рекурсивный алгоритм? А у меня была другая идея. Вот тут у меня возникли проблемы. Сказали что
текст невозможно прочитать:
Данная программа передаёт в конечный файл любую лексемму, которая следует за взятым из шаблона словом
Как и требовалось это тоже набросок программы, и он нуждается в проработке. Помимо явных
ошибок в ней можно доработать некоторые детали.Например избавиться от глобальных переменных,и т.д.
Но в целом идея программы хорошо подходит под решение задач подобных этой.

Вот набросок программы:
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++;                                //счётчик цикла
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
03.10.2007, 01:40  [ТС]     Поиск в тексте фрагментов (по заданному шаблону) #6
В чём моя ошибка??
Yandex
Объявления
03.10.2007, 01:40     Поиск в тексте фрагментов (по заданному шаблону)
Ответ Создать тему
Опции темы

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