[C] Ustalanie zgodności łańcucha ze wzorem.

jakub1998
Użytkownik
Użytkownik
Posty: 139
Rejestracja: 24 lis 2015, o 16:53
Płeć: Mężczyzna
Podziękował: 30 razy

[C] Ustalanie zgodności łańcucha ze wzorem.

Post autor: jakub1998 »

Witam, mam do napisania funkcję, która ma robić to co w tytule. Znak ? we wzorze ma oznaczać zgodność z dowolnym znakiem w łańcuchu, znak * z dowolnym ciągiem znaków w łańcuchu. Funkcja mi nie działa tylko w przypadku, gdy jest więcej tych gwiazdek a za nimi liter, na przykład *b*b, ponieważ w moim pomyśle jedyne co wpadło mi na myśl gdy jest na przykład ta pierwsza literka b żeby pętlą while poszukać ostatniego wystąpienia tej wartości, wtedy poprawny ciąg ssbb mi nie zadziała. Wklejam poniżej kod i prosiłbym o jakieś wskazówki czym mogę to poprawnie zrobić.

Kod: Zaznacz cały

bool match(char *pattern, char *chain)
{
	int a,b;
 
	a = strlen(pattern);
	b = strlen(chain);
 
	int i=0, j=0; 
 
	while(i<a)
	{
		if(pattern[i] == '*')
		{
			if(i+1 == a)
				break;
			else
			{
				int temp = j, temp1 = j; 
 
				while(temp < b)
				{
					if(chain[temp] == pattern[i+1])
						j = temp;
 
					temp++;
				}
 
				if(temp == temp1)
				{
					printf("F\n");
					return false;
				}
 
				++i;
			}
		}
		else
		{
			if(pattern[i] == '?')
			{
				++i;
				++j;
			}
			else
			{
				if(pattern[i] == chain[j])
				{
					++i;
					++j;
				}
				else
				{
					printf("F\n");
					return false;		
				}
			}
		}
	}
 
	printf("T\n");
	return true;	
}
ODPOWIEDZ