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

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

Войти
Регистрация
Восстановить пароль
 
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
#1

Задача о строке и шаблоне - C++

14.11.2012, 00:59. Просмотров 264. Ответов 6
Метки нет (Все метки)

вечер добрый. в задаче нужно определить, соответствует ли строка шаблону, все как обычно "?" - любой символ, "*" - любая последовательность символов, может быть пустой.
Пример 1
на входе:
ABBCDA
A*CDA

на выходе:
YES

Пример 2
на входе:
AADAAVA
A*DA*AA*

на выходе:
NO


Решил то решил, но на мой взгляд не красиво, т.е. получился довольно громоздкий код, ничего умного в общем Может есть какое-нибудь красивое ее решение?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 00:59     Задача о строке и шаблоне
Посмотрите здесь:

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

Задача на обработку символов в строке - C++
Условие:Задать предложение.Убрать повторяющиеся буквы "е".Вывести результат на экран с новой строки. как написать текст...

Задача о строке. Удаление дубликатов слов - C++
В строке символов определить количество повторений каждого слова и удалить дубликаты слов.Слова отделяются пробелами. помогите...

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

Подсчёт первого слова в строке и задача на перестановку - C++
#include <iostream> #include <string> using namespace std; int main(){ setlocale(0,""); int i=0; char s = {'...

Задача с массивом (найти максимальный парный элемент в каждой строке массива) - C++
Здравствуйте! Я новичок в с++, помогите разобраться с такой задачей: нужно найти максимальный парный элемент в каждой строке массива A (n,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
14.11.2012, 01:05     Задача о строке и шаблоне #2
регулярными выражениями пользоваться нельзя? требуется самому алгоритм сравнения написать?
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
14.11.2012, 01:07  [ТС]     Задача о строке и шаблоне #3
ну конечно с помощью регулярных выражений тут тривиально) но нет, это с олимпиады, да и нет же помоему их в си ..
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
14.11.2012, 01:11     Задача о строке и шаблоне #4
в си нет, в с++11 есть
а какой язык требуется?
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
14.11.2012, 01:12  [ТС]     Задача о строке и шаблоне #5
си++ требуется
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
14.11.2012, 01:32     Задача о строке и шаблоне #6
Киньте что ли свой код, посмотрим. У меня никакой клевый алгоритм не придумывается. Кроме символьного сравнения, циклов и прочего. Собственно, я уверен, что подобное уже написано у вас
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 21:53     Задача о строке и шаблоне
Еще ссылки по теме:

Определить количество букв, цифр и остальных символов, присутствующих в строке. Задача в С - C++
Дана строка символов. Определить количество букв, цифр и остальных символов, присутствующих в строке.

C# C++ Задача поиск определенного символа в строке, запись того что после него в дргую строку - C++
Вот пошагово: 1)Создать файл из символов, последний символ *(маркер) 2)После маркера записать ешё некоторое кол-во символов 3)...

Не могу понять ошибку "C2043: недопустимый break". Задача: найти подстроку в строке - C++
#include <iostream> #include <fstream> #include <string> #include <stdio.h> #include <conio.h> using namespace std; int...

список на шаблоне - C++
я хочу сделать шаблонный список, но не так, чтобы при создании объекта списка List<int> mylist указывать тип элементов, а чтобы список...


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

Или воспользуйтесь поиском по форуму:
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
14.11.2012, 21:53  [ТС]     Задача о строке и шаблоне #7
все, нашел я симпатичное решение с помощью рекурсии, на этом же форуме )

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
#include <iostream>
#include <vector>
#include <string>
 
std::string s, p;
 
bool match(int spos, int ppos) {
    if (spos == s.size() || ppos == p.size())
        return spos == s.size() && ppos == p.size();
    else if (p[ppos] == '?')
        return match(spos + 1,ppos + 1);
    else if (p[ppos] == '*') {
        for (int i = spos; i <= s.size(); ++i)
            if (match(i, ppos + 1))
                return true;
    } else
        return s[spos] == p[ppos] && match(spos + 1,ppos + 1);
    return false;
}
 
int main() {
    std::cin >> s >> p;
    std::cout << (match(0, 0) ? "YES" : "NO");
}
Yandex
Объявления
14.11.2012, 21:53     Задача о строке и шаблоне
Ответ Создать тему
Опции темы

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