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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
#1

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

22.09.2007, 00:59. Просмотров 1890. Ответов 5
Метки нет (Все метки)

поиск в тексте фрагментов (по заданному шаблону)
и запись их в таблицу хотя бы алгоритм за задницу ухватить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2007, 00:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск в тексте фрагментов (по заданному шаблону) (C++):

Создать матрицу по заданному шаблону - C++
Ребят кому не тяжело, помогите пожалуйста написать программу В общем нужно задать размер матрицы, что бы в ней главная и побочная...

Поиск по шаблону * и? - C++
Здраствуите можете помочь с малеьким таки заданием ,я пытался еа куралесить ну не получилось. я вложил исходник в текстовом фаиле

Поиск по шаблону - C++
При реализации поиска по шаблону столкнулся со следующей проблемой: Шаблон: *abc Тест1: abc Тест2: fabc Тест3: ssabk_abc Первые...

[OpenCV] Поиск по шаблону - C++
Добрый день, имеется код с robocraft, в котором используется функция cvMatchTemplate, вопрос состоит в том, чтобы узнать нашла ли функция...

Поиск слова, по заданному символу - C++
Помогите исправить прогу, нужно найти последнее слово, начинающееся с заданного символа! #include <fstream> #include <iostream> ...

Контейнер map. Поиск по заданному ключу - C++
Нужно осуществить поиск по заданному ключу. Программа учета в интернет-магазине К примеру вводится название цена ...

5
skaa
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.Я как-бы новичок в этом деле но страсть какой догадливый!!!
0
maximf
0 / 0 / 0
Регистрация: 29.06.2007
Сообщений: 50
02.10.2007, 13:27 #4
Задача поиска по шаблону решается обычно с помощью регулярных выражений.
Для построения парсера существует множество методов (и толстенные учебники, типа Ахо и Ульмана). Проще всего написать рекурсивный алгоритм. Думаю, в интенете должна быть куча примеров.
0
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++;                                //счётчик цикла
0
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
03.10.2007, 01:40  [ТС] #6
В чём моя ошибка??
0
03.10.2007, 01:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2007, 01:40
Привет! Вот еще темы с ответами:

Поиск в элементов в таблице по заданному ключу - C++
Здравствуйте уважаемые программисты, прошу вашей помощи, сам никак не могу понять как реализовать ниже сказанное: Нужно в данной...

Поиск строки в файле по заданному слову - C++
Ребят,подскажите. У меня создан текстовый файл,в котором 5 строк,каждая строка это новая книга,а именно автор,название,издатель,год...

Реализовать поиск в массиве структур по заданному полю - C++
Задание : Определить тип данных запись, имеющий поля фамилия и оценки по 5 предметам.Определить массив из 10 записей.В программе ввести в...

Реализовать поиск в массиве структур по заданному полю - C++
Есть структура #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; using namespace...


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

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

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