Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Oleg I. Khovayko                     2:5020/400     09 Oct 2002  20:22:45
 To : Anton Morozov
 Subject : Re: маска
 -------------------------------------------------------------------------------- 
 
 > Есть маска, есть строка. В маске любые символы и "*" с "?" Hада проверить,
 > попадает ли строка в маску.
 
 Как-то сильно наворочено у тебя получилось. Я, честно говоря, сильно не вникал.
 Вместо вникания в твой код написал я за пару часов такуя вот процедуру:
 
 <<<
 #include <stdio.h>
 int fmask(const char *mask, const char *str) {
   for( ; ; str++) {
     switch(*mask++) {
       case '*' : if(fmask(mask, str))
                     return 1;
                  mask--;
       case '?' : if(*str == 0) return 0;
     continue;
       case  0  : return *str == '\0';
       default  : if(mask[-1] == *str) continue;
                  return 0;
     } // switch
   } // for
 } // fmask
 void main() {
   char mask[100], str[100];
 
   for( ; ; ) {
     printf("\nEnter mask and str: ");
     scanf("%s%s", mask, str);
     printf("\nmask:[%s] str:[%s]; Result: %s\n", mask, str, 
       fmask(mask, str)? "OK" : "BAD");
   }
 }
 
 >>>
 
 Вроде как работает...
 Извини, что C использую, но Паскаля у меня нет, а без тестирования, "вслепую" 
 сразу правильно написать вряд ли бы получилось. Hо я надеюсь, тебе не сложно
 будет 
 "по мотивам" написать что-то свое на Паскале.
 
 Как будешь перепирать, обрати внимание, что в метке "case '*'" нет
 continue/break.
 Здесь управление передается на "case '?'"
 
 PS: полную безглючность не гарантирую - но на паре десятков моих тестов вроде
 как
 работает. Потестируй перед использованием...
 
 -- 
 #include <best/regards.hpp>
 Oleg I. KHOVAYKO  
 (301)435-5885 || WEB: http://olegh.spedia.net
 --- ifmail v.2.15dev5
  * Origin: National Center for Biotechnology Information (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 маска   Anton Morozov   08 Oct 2002 06:12:45 
 Re: маска   Oleg I. Khovayko   09 Oct 2002 20:22:45 
 Re: маска (вдогонку - case insensentive)   Oleg I. Khovayko   09 Oct 2002 20:53:26 
Архивное /ru.algorithms/11522b3b02beb.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional