dllbridge

Untitled

Jul 5th, 2020
1,221
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3.  
  4.  
  5. //  требуется #include  <string.h>
  6. ///////////////////////////////////////////////////////////////////////////////////
  7. int selectWords(const char *str, int min, int max, char words[30][21])           //
  8. {
  9.    
  10.     int    F1 = 0,         // Флаг F1 = 1 если встретили допустимый символ ( Type = 1, 2 или 3 )
  11.          Type = 0,          //  Тип символа: 1, 2, 3 допустимы для слов. 0 = недопустимый символ
  12.             n = 0,                                                    //  Счётчик найденных слов
  13.             c = 0,                                         //  Кол-во символов в найденном слове
  14.             i = 0;                         //  Счётчик символов в главной строке str (источнике)
  15.            
  16.     for(    i = 0; str[i] != 0; i++)
  17.     {
  18.                                             Type = 0;
  19.         if(str[i] >= '0' && str[i] <= '9')  Type = 1;    // Это число   (цифра)
  20.         if(str[i] >= 'A' && str[i] <= 'Z')  Type = 2;    // Это заглавная буква (A, B, C, D....)
  21.         if(str[i] >= 'a' && str[i] <= 'z')  Type = 3;    // Это маленькая буква (a, b, c, d....)
  22.         if(str[i] == '!' || str[i] =='\'')  Type = 4;    // Это разделители  
  23.         if(str[i] == '"' || str[i] == ';')  Type = 4;    // Это разделители
  24.         if(str[i] == '?' || str[i] == '-')  Type = 4;    // Это разделители
  25.         if(str[i] == '.' || str[i] == ',')  Type = 4;    // Это разделители
  26.         if(str[i] == ' ' || str[i] == ':')  Type = 4;    // Это разделители                  
  27.                
  28.         if(F1 == 0 && Type > 0 && Type < 4) { F1 = 1;  c = 1; continue; } //  Найден первый символ
  29.         if(F1 == 1 && Type > 0 && Type < 4)            c ++ ;
  30.         if(F1 == 1 &&(Type== 4 || Type ==0))  
  31.         {
  32.            F1  = 0;
  33.            if(c >= min && c <= max)             //  если слово недопустимой длины, то исключаем его
  34.            {
  35.               strncpy(words[n], &str[i-c], c);  
  36.              
  37.               words[n][c] = 0;                     //  признак завершения слова (терминальный ноль)
  38.              
  39.               n ++;                                  //  Увеличим счётчик. (найдено ещё одно слово)  
  40.            }
  41.            c = 0;                                                      //  обнулим счётчик символов
  42.         }
  43.     }
  44.    
  45.     if(F1 == 1)
  46.     {
  47.        
  48.        if(c >= min && c <= max)                //  если слово недопустимой длины, то исключаем его
  49.        {
  50.        
  51.           strncpy(words[n], &str[i-c], c);  
  52.              
  53.           words[n][c] = 0;                         //  признак завершения слова (терминальный ноль)
  54.           n ++;                                    //    Увеличим счётчик. (найдено ещё одно слово)
  55.        }   
  56.     }
  57.    
  58. return n;                                                      //  Возвращаем кол-во найденных слов
  59. }
RAW Paste Data