Advertisement
Guest User

Chak-)

a guest
Oct 31st, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <Windows.h>
  4. #define N 3
  5. #define M 100
  6.  
  7. int Word_Checker(char *string, char *patern); //перевірка слова
  8. //int Word_Checker_Rec(char *string, char *patern); //провірка слвоа рекурсивно
  9. int Rec_While(char *pointer_string, char *pointer_patern, int flag); //Рекурсивний цикл
  10.  
  11. int main()
  12. {
  13. int i;
  14. char array[N][M]; //масив слів
  15. char patern[M]; //шаблони
  16. printf("Enter array words\n");
  17. for(i=0;i<N;i++)
  18. {
  19. gets_s(array[i]);
  20. }
  21. printf("Enter patern word\n"); //шаблонне слово
  22. gets_s(patern);
  23. for(i=0;i<N;i++)
  24. {
  25. printf("%s\t%s\t%s\n",array[i],patern,Rec_While(array[i],patern,0)==255?"Good":"Bad");//255-істина..і гут..євиводимо саме слвоо, шаблон і значення чи це слвоо підходить під шаблон чи не
  26. }
  27. system("pause");
  28. return 0;
  29. }
  30.  
  31.  
  32. int Word_Checker(char *string, char *patern) //вказівник на слово , на шаблон вказівник
  33. {
  34. char *pointer_string; //вказівник на слво
  35. char *pointer_patern; //вказівник на шаблон
  36. int flag=0; //фолс..прапорець чи слвоо пройшло перевірку
  37. pointer_string=string;
  38. pointer_patern=patern;
  39. while(*pointer_string) //поки вказівник на нуль символ не піде працювати
  40. {
  41. if(*pointer_patern=='*')
  42. {
  43. pointer_patern++;
  44. while(*pointer_string!=*pointer_patern) pointer_string++;
  45. continue; //це до попереднього вайла
  46. }
  47. if(*pointer_patern=='?')
  48. {
  49. pointer_string++;
  50. pointer_patern++;
  51. continue;
  52. }
  53. if(*pointer_patern==*pointer_string)
  54. {
  55. pointer_string++;
  56. pointer_patern++;
  57. flag=1; //зійшлися
  58. }
  59. else
  60. {
  61. return -255; //не вірно якщо не співпали
  62. }
  63. }
  64. if(flag==1) return 255;
  65. }
  66.  
  67. /*int Word_Checker_Rec(char *string, char *patern)
  68. {
  69. char *pointer_string;
  70. char *pointer_patern;
  71. int flag=0;
  72. pointer_string=string;
  73. pointer_patern=patern;
  74. if(Rec_While(string,patern,0)==255) return 255;
  75. }*/
  76.  
  77.  
  78.  
  79. int Rec_While(char *pointer_string, char *pointer_patern, int flag)
  80. {
  81. if(*pointer_patern=='*')
  82. {
  83. pointer_patern++;
  84. while(*pointer_string!=*pointer_patern) pointer_string++;
  85. Rec_While(pointer_string, pointer_patern, flag);
  86. }
  87. if(*pointer_string=='\0' && flag==1 ) return 255; // то все три умови виходу з ф-ції
  88. if(*pointer_string=='\0' && flag==0 ) return -255;
  89. if(*pointer_patern=='?')
  90. {
  91. // pointer_string++;
  92. //pointer_patern++;
  93. return Rec_While(pointer_string+1, pointer_patern+1,flag); // тут робити плюс 1
  94. }
  95. if(*pointer_patern==*pointer_string) // перевіряємо слова
  96. {
  97. pointer_string++;
  98. pointer_patern++;
  99. flag=1;
  100. return Rec_While(pointer_string, pointer_patern,flag);
  101. }
  102. else
  103. {
  104. return -255;
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement