Поиск подстроки в строке

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

>

nom;//Объявление строки с результатами поиска

public Form1()

{

InitializeComponent();

//Отключение кнопки: "Выполнить поиск"

button3.Enabled = false;

//Отключение кнопок выбора алгоритма

radioButton1.Enabled = false;

radioButton2.Enabled = false;

radioButton3.Enabled = false;

radioButton4.Enabled = false;

label2.Text = "";

}

//Событие - клик на кнопку Выбрать файл поиска

private void button1_Click(object sender, EventArgs e)

{

//Очистка исходной строки

str = "";

//Фильтр открываемых файлов

openFileDialog1.Filter = "Text files (*.TXT)|*.txt";

//Очистка имени открываемого файла

openFileDialog1.FileName = "";

//Если файл выбран

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream TextFile = new FileStream(openFileDialog1.FileName, FileMode.Open);

//Запись имени открываемого файла в элемент формы

label2.Text = openFileDialog1.SafeFileName.Substring(0, openFileDialog1.SafeFileName.Length - 4);

//Закрытие потока данных

TextFile.Close();

using (StreamReader sr = new StreamReader(openFileDialog1.FileName,Encoding.Default))

{

//Считывание текста в строку

str = sr.ReadToEnd();

}

//Включение кнопок выбора алгоритмов

radioButton1.Enabled = true;

radioButton2.Enabled = true;

radioButton3.Enabled = true;

radioButton4.Enabled = true;

}

}

//Событие - клик на кнопку Выполнить поиск

private void button3_Click(object sender, EventArgs e)

{

//Если окно искомого фрагмента пустое - сообщение об ошибке

if (textBox1.Text == "")

MessageBox.Show("Отсутствует искомый фрагмент","Ошибка");

//Выполнение поиска искомого фрагмента

else

{

//Если выбран последовательный поиск

if (radioButton1.Checked == true)

{

Stopwatch stopWatch = new Stopwatch();

//Старт счетчика тактов

stopWatch.Start();

//Вызов функции последовательного поиска

nom = Function.Posl(textBox1.Text, str);

//Остановка счетчика тактов

stopWatch.Stop();

TimeSpan ts = stopWatch.Elapsed;

string elapsedTime = Convert.ToString(ts.Ticks);

//Вывод сообщения с количеством тактов процессора

MessageBox.Show(elapsedTime, "Количество тактов процессора");

//Если строка номеров не пустая

if (nom != "")

{

//Вывод результата поиска

MessageBox.Show("Данный фрагмент встречается с " + nom + "-го номера", "Результат поиска");

//Открываем файл, в котором выполнялся поиск System.Diagnostics.Process.Start(openFileDialog1.FileName);

}

//Вывод сообщения о неудачном поиске

else MessageBox.Show("Данный фрагмент не встречается в тексте", "Результат поиска");

}

//Если выбран алгоритм Рабина-Карпа

if (radioButton2.Checked == true)

{

Stopwatch stopWatch = new Stopwatch();

stopWatch.Start();

//Вызов функции поиска алгоритмом Рабина

nom = Function.Rabina(textBox1.Text, str);

stopWatch.Stop();

TimeSpan ts = stopWatch.Elapsed;

string elapsedTime = Convert.ToString(ts.Ticks);

MessageBox.Show(elapsedTime, "Количество тактов процессора");

if (nom != "")

{

MessageBox.Show("Данный фрагмент встречается с " + nom + "-го номера", "Результат поиска"); //Открываем файл, в котором выполнялся поиск System.Diagnostics.Process.Start(openFileDialog1.FileName);

}

else MessageBox.Show("Данный фрагмент не встречается в тексте", "Результат поиска");

}

//Если выбран алгоритм КМП

if (radioButton3.Checked == true)

{

Stopwatch stopWatch = new Stopwatch();

stopWatch.Start();

//Вызов функции поиска алгоритмом КМП

nom = Function.KMP(textBox1.Text, str);

stopWatch.Stop();

TimeSpan ts = stopWatch.Elapsed;

string elapsedTime = Convert.ToString(ts.Ticks);

MessageBox.Show(elapsedTime, "Количество тактов процессора");

if (nom != "")

{

MessageBox.Show("Данный фрагмент встречается с " + nom + "-го номера", "Результат поиска"); //Открываем файл, в котором выполнялся поиск System.Diagnostics.Process.Start(openFileDialog1.FileName);

}

else MessageBox.Show("Данный фрагмент не встречается в тексте", "Результат поиска");

}

//Если выбран алгоритм БМ

if (radioButton4.Checked == true)

{

Stopwatch stopWatch = new Stopwatch();

stopWatch.Start();

//Вызов функции алгоритмом БМ

nom = Convert.ToString(Function.BM(textBox1.Text,str));

stopWatch.Stop();

TimeSpan ts = stopWatch.Elapsed;

string elapsedTime = Convert.ToString(ts.Ticks);

MessageBox.Show(elapsedTime,"Количество тактов процессора");

if (nom != "")

{

MessageBox.Show("Данный фрагмент встречается с " + nom + "-го номера", "Результат поиска"); System.Diagnostics.Process.Start(openFileDialog1.FileName);

}

else MessageBox.Show("Данный фрагмент не встречается в тексте", "Результат поиска");

}

}

}

//Включение кнопки "Выполнить поиск", после выбора алгоритма

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

button3.Enabled = true;

}

//Включение кнопки "Выполнить поиск", после выбора алгоритма

private void radioButton3_CheckedChanged(object sender, EventArgs e)

{

button3.Enabled = true;

}

//Включение кнопки "Выполнить поиск", после выбора алгоритма

private void radioButton2_CheckedChanged(object sender, EventArgs e)

{

button3.Enabled = true;

}

//Включение кнопки "Выполнить поиск", после выбора алгоритма

private void radioButton4_CheckedChanged(object sender, EventArgs e)

{

button3.Enabled = true;

}

}

}

Код библиотеки классов:

System;System.Collections.Generic;System.Linq;System.Text;System.Collections;

Fuction

{

public static class Function

{

//Функция последовательного поиска

public static string Posl(string x, string s)

{

представлена в Приложении А

}

//Вычисление хеш-функции для алгоритма Рабина

public static int Hash(string s)

{

представлена в Приложении Б