0 / 0 / 0
Регистрация: 01.12.2017
Сообщений: 2
|
||||||
1 | ||||||
Поиск и вывод строки по заданному шаблону (с использованием симоволов "?", "*", "+")01.12.2017, 16:54. Просмотров 656. Ответов 3
Добрый день
Имею такое задание: необходимо написать программу, которая сможет найти в файле строку и вывести ее, где содержится заданный шаблон (аргумент из командной строки). Например: имею шаблон "dvd" и файл, в котором несколько строк: 1 anbmd 2 advnm 3 udvdnm 4 dvujh Проходит по каждой строке, находит совпадние с 3 строкой и выводит на экран: udvdnm Я написал для этого код, все работает Сравниваю в цикле символ строки с символом шаблона, если нахожу совпадение - запускаю 2 цикл, который уже сравнивает следующий символ строки с каждой последующим симоволом шаблона. Но дальше его нужно усложнить. Шаблон может иметь в себе специальный символы (?, *, +), где ? - 0 или 1 символ, * - 0 или более символов, + - 1 или более символов. То есть по шаблону, например, "colou?r" он должен из списка: color colour colouur colouuur вывести color, colour. И соотвественно также с другими символами. Искал решение в интернете, пытался придумать что-то сам, но пока сделал только для ?, да и то как-то коряво, а как сделать для * и +, где может быть неопределенное число симоволов - не знаю. Подскажите примерный алгоритм поиска или код(сам пишу на СИ). Заранее благодарю.
Символ ?, *, + может встречаться в шаблоне максимально 1 раз.
0
|
|
01.12.2017, 16:54 | |
Алгоритм роста "квадрата" или как работает "черный ящик" Из пункта "А" приехать в пункт "Б" и показать возможные траектории движения Как написать регулярное выражение для выдергивания английских букв и символов: "+", ",", ":", "-", " ", "!", "?" и "." В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
__________________
3
Помогаю в написании студенческих работ здесь. |
|
Модератор
2767 / 1923 / 418
Регистрация: 26.03.2015
Сообщений: 7,142
|
|||||||||||
01.12.2017, 18:33 | 2 | ||||||||||
Как-то так:
з.ы. Можно записать функцию одним булевым выражением, но код станет менее читабельным:
0
|
0 / 0 / 0
Регистрация: 01.12.2017
Сообщений: 2
|
|
02.12.2017, 14:22 [ТС] | 3 |
Как это будет на СИ?
Получается мне надо во 2 цикл к условию когда сравнивается следующая буква строки с шаблоном добавить условие str[i+j] == '*' или другой символ? Немного не могу понять с++
0
|
Модератор
2767 / 1923 / 418
Регистрация: 26.03.2015
Сообщений: 7,142
|
|
02.12.2017, 15:44 | 4 |
Если у Вас вопрос по Си, то лучше его задать в разделе по Си.
Мне в Вашем коде не нравится то, что у Вас всё смешано в кучу. Каждая функция должна заниматься чем-то одним. Если в шаблоне может встречаться только один спецсимвол, то код можно упростить.
0
|
02.12.2017, 15:44 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща", "чу", "щу". Исправить ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |