p align="justify"> ValueShift [k] = x.Length - i - 1;
k + +;
}
}
}
// Функція пошуку алгоритмом БМstatic string BM (string x, string s)
{
bool has, have ;//Прапори
int l, j, i ;//Лічильники
// Виклик процедури, формірубщей таблицю зміщень
Function.ShiftBM (x);
// Оголошення рядки з номерами позицій
string nom = "";
if (x.Length> s.Length) return nom;
// Основний цикл по вихідної рядку
for (i = 0; i
{
j = x.Length - 1;
have = true;
// Перевірка з останнього символу ((j> = 0) && (have == true))
{
// Якщо не збігається символ шуканої і вихідної
if (s [i + j]! = x [j])
{
have = false;
// Якщо це останній символ
if (j == x.Length-1)
{
l = 0;
has = false;// Прапор
// Пошук символу в таблиці зміщень
while ((l
{
// Якщо символ є
if (s [i + j] == SymbolOfX [l])
{
has = true;// Зміна прапора
// Зрушення на величину
i = i + ValueShift [l] - 1;
}
l + +;
}
// Якщо не знайдене символ в таблиці зміщень
if (has == false)
// Зрушення на величину шуканої рядка
i = i + x.Length - 1;
}
}
j -;
}
if (have == true)
nom = nom + Convert.ToString (i) + ",";
}
// Якщо рядок номерів не порожня
if (nom! = "")
{
// Видалення останньої коми і пропусків
nom = nom.Substring (0, nom.Length - 2);
}
return nom ;//Повернення результату пошуку
}
Додаток Д
Реалізація програмного коду програми
Код форми:
KurgachevND_Kursovaya_1kurs
{