Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2018, 23:38   #1
makcimmushka
Новичок
Джуниор
 
Регистрация: 22.10.2018
Сообщений: 1
По умолчанию Регулярные выражения(помощь с кодом) С++

Задача: проверить вводимую с клавиатуры строку на заданный шаблон(маску). * - сколь угодно элементов, ?-1 элемент.
Язык с++
Наткнулся на вот такое решение данной задачи, но некоторые строчки кода вызвали некоторые вопросы(помечены //???). Кому не сложно, обьясните пожалуйста их смысл(и может если другие неправильно интерпретировал, то поправьте). Буду признателен)
Код:
#include <iostream>

using namespace std;
bool check(char* s, char* mask)
{

   char* cp=0;//???
   char* mp=0;//???
  for (; *s&&*mask!='*'; mask++,s++)//пока текущий элемент маски не равен * смещаем указатели на 1
  if (*mask!=*s&&*mask!='?')//если символ в маске не равен соответствующему символу в строке(за исключением * и ?), то false
  return false;
  for ( ; ; )
    {
    if (!*s)//если проверяемая строка закончилась
    {
    while (*mask=='*')//пока символ маски равен * смещаем указатель маски
    mask++;
    return !*mask;//???
    }
    if (*mask=='*')//если текущий элемент маски равен *
    {
    if (!*++mask)//если * последний элемент маски, то true всегда, ибо может быть сколь угодно элементов в строке
    return true;
    mp=mask;//???
    cp=s+1;//???
    continue;
    }
    if (*mask==*s || *mask=='?')//если элемент строки равен соответствующему элементу маски или элемент маски равен ?, то смещаем указатели
    {
    mask++, s++;
    continue;
    }
    mask=mp;//???
    s=cp++;//???
  }
}

int main()
{
    char *str=new char [100];
    char *maska=new char[100];
    cin>>str;
    cin>>maska;
    if (check(str,maska)==1)
    cout<<"True";
    else cout<<"False";


    return 0;
}
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 22.10.2018 в 23:59.
makcimmushka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# Регулярные выражения Basachi Помощь студентам 1 16.10.2016 17:27
Регулярные выражения C# Дупло Помощь студентам 4 28.09.2011 17:19
Регулярные выражения Syltan JavaScript, Ajax 3 24.04.2010 23:08
Регулярные выражения Marsik Помощь студентам 4 14.11.2009 14:13
Регулярные выражения 7KByte Общие вопросы C/C++ 1 01.06.2009 22:51