Witam jestem raczej początkujący jeśli chodzi o programowanie. Mam do napisania funkcję która ustala zgodność wzorca z łańcuchem. Znak ’ ?’ we wzorcu oznacza zgodność z dowolnym innym znakiem. Znak ’’ oznacza zgodność z dowolnym, również pustym, ciągiem znaków w łańcuchu. Znak różny od ’ ?’ i ’’ oznacza zgodność tylko z samym sobą.
Próbowałem napisać to w taki sposób:
Bool match(char* model, char* string)
{
int model_lenght = strlen(model);
int string_lenght = strlen(string);
while(model_lenght>0 && string_lenght>0)
{
if((model[model_lenght-1]==string[string_lenght-1])||(model[model_lenght-1]=='?')||(string[string_lenght]=='?'))
{
model_lenght--;
string_lenght--;
}
else
if(model[model_lenght-1]=='*')
{
model_lenght--;
string_lenght=model_lenght;
}
else
if(string[string_lenght-1]=='*')
{
string_lenght--;
model_lenght=string_lenght;
}
else
return 0;
}
if(model_lenght==0 && string_lenght==0)
return 1;
else
return 0;
}
Ale niestety nie działa prawidłowo dla '*'. Szczerze nie mam pomysłu jak ten algorytm ma działać w przypadku gwiazdki :(