Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <Windows.h>
- #define N 3
- #define M 100
- int Word_Checker(char *string, char *patern); //перевірка слова
- //int Word_Checker_Rec(char *string, char *patern); //провірка слвоа рекурсивно
- int Rec_While(char *pointer_string, char *pointer_patern, int flag); //Рекурсивний цикл
- int main()
- {
- int i;
- char array[N][M]; //масив слів
- char patern[M]; //шаблони
- printf("Enter array words\n");
- for(i=0;i<N;i++)
- {
- gets_s(array[i]);
- }
- printf("Enter patern word\n"); //шаблонне слово
- gets_s(patern);
- for(i=0;i<N;i++)
- {
- printf("%s\t%s\t%s\n",array[i],patern,Rec_While(array[i],patern,0)==255?"Good":"Bad");//255-істина..і гут..євиводимо саме слвоо, шаблон і значення чи це слвоо підходить під шаблон чи не
- }
- system("pause");
- return 0;
- }
- int Word_Checker(char *string, char *patern) //вказівник на слово , на шаблон вказівник
- {
- char *pointer_string; //вказівник на слво
- char *pointer_patern; //вказівник на шаблон
- int flag=0; //фолс..прапорець чи слвоо пройшло перевірку
- pointer_string=string;
- pointer_patern=patern;
- while(*pointer_string) //поки вказівник на нуль символ не піде працювати
- {
- if(*pointer_patern=='*')
- {
- pointer_patern++;
- while(*pointer_string!=*pointer_patern) pointer_string++;
- continue; //це до попереднього вайла
- }
- if(*pointer_patern=='?')
- {
- pointer_string++;
- pointer_patern++;
- continue;
- }
- if(*pointer_patern==*pointer_string)
- {
- pointer_string++;
- pointer_patern++;
- flag=1; //зійшлися
- }
- else
- {
- return -255; //не вірно якщо не співпали
- }
- }
- if(flag==1) return 255;
- }
- /*int Word_Checker_Rec(char *string, char *patern)
- {
- char *pointer_string;
- char *pointer_patern;
- int flag=0;
- pointer_string=string;
- pointer_patern=patern;
- if(Rec_While(string,patern,0)==255) return 255;
- }*/
- int Rec_While(char *pointer_string, char *pointer_patern, int flag)
- {
- if(*pointer_patern=='*')
- {
- pointer_patern++;
- while(*pointer_string!=*pointer_patern) pointer_string++;
- Rec_While(pointer_string, pointer_patern, flag);
- }
- if(*pointer_string=='\0' && flag==1 ) return 255; // то все три умови виходу з ф-ції
- if(*pointer_string=='\0' && flag==0 ) return -255;
- if(*pointer_patern=='?')
- {
- // pointer_string++;
- //pointer_patern++;
- return Rec_While(pointer_string+1, pointer_patern+1,flag); // тут робити плюс 1
- }
- if(*pointer_patern==*pointer_string) // перевіряємо слова
- {
- pointer_string++;
- pointer_patern++;
- flag=1;
- return Rec_While(pointer_string, pointer_patern,flag);
- }
- else
- {
- return -255;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement