Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Реализация пользовательского интерфейса




Пользовательский интерфейс состоит из двух полей ввода информации, в данном случае текста. В первое поле вводиться текст для кодирования информации, а в верхнее правое поле вводиться уже закодированный текст для его дешифрования. Двух кнопок: «Закодировать», «Декодировать» и двух полей вывода информации, в нижнее левое поле выводиться закодированный текст, а в нижнее правое поле выводиться уже декодированная информация. Ниже на рисунке 3 изображено окно программы.

Рисунок 3- окно программы

 

Инструкция пользователя

Для архивации данных нужно ввести текст, например «здрааавствуууу» в первое поле и нажать кнопку «Закодировать».

Рисунок 4 – ввод данных

 

После чего в нижнем правом поле появиться архивированный текст «Здр4аств5уй».

Рисунок 5 – кодированный текст

 

Для декодирования текста нужно зашифрованный текс ввести в верхнее правое поле и нажать кнопку «Декодировать».

Рисунок 6 - декодированный текст

После чего появиться наш первоначально введенный текст.

 


 

Листинг программы

namespace algoritm_rle

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

string str1 = text_input.Text, str = "", ch = "";

int i, k, j;

// от 0 до длины строки

for (i = 0; i < str1.Length;)

{

// получаем текущий символ из строки str1

ch = str1.Substring(i, 1);

//счетчик количества повторяющихся символов

k = 0;

// если последний символ

if (i == str1.Length - 1)

{

str += Convert.ToString(ch);

//выходим из цикла

break;

}

//если текущий символ равен символу

if (str1.Substring(i + 1, 1) == ch)

{

for (j = i; j < str1.Length; j++)

{

if (str1.Substring(j, 1) == ch)

{

//увеличиваем счетчик

k++;

}

else

//выходим из цикла

break;

}

i = j;

}

else

i++;

if (k!= 0)

str += Convert.ToString(k) + Convert.ToString(ch);

else

str += Convert.ToString(ch);

 

}

text_output.Text = str;

button2.Enabled = true;

}

 

private void button2_Click(object sender, EventArgs e)

{

string str1 = textBox1.Text, str = "", ch = "", s = "", symb = "";

int i, j, k=0;

for (i = 0; i < str1.Length;)

{

// текущий символ i

ch = str1.Substring(i, 1);

k = 0;

s = "";

 

// если символ ch является цифрой

if ("0123456789".Contains(ch))

{

// если текущий символ j является цифрой

for (j = i; j < str1.Length; j++)

{

if ("0123456789".Contains(str1.Substring(j, 1)))

{

s += str1.Substring(j, 1);

}

else

break;

}

// получаем букву

symb = str1.Substring(j, 1);

i = j + 1;

}

else

i++;

if (s.Length!= 0)

{

// декодирование буквы

for (j = 0; j < Convert.ToInt32(s); j++)

str += symb;

}

else

str += Convert.ToString(ch);

}

out_shifr.Text = str;

}

 

private void groupBox1_Enter(object sender, EventArgs e)

{

 

}

 

private void text_input_TextChanged(object sender, EventArgs e)

{

 

}

}

}

 


Заключение

Будущее алгоритмов сжатия тесно связано с будущим компьютерных технологий. Современные алгоритмы уже вплотную приблизились к Шенноновской оценке 1.3 бита на символ, но ученые не видят причин, по которым компьютер не может предсказывать лучше, чем человек. Для достижения высоких степеней сжатия приходится использовать более сложные алгоритмы. Однако существовавшее одно время предубеждение, что сложные алгоритмы с более высокой степенью сжатия всегда более медленны, несостоятельно. Так, существуют крайне быстрые реализации алгоритмов PPM для текстовой информации и SPIHT для графики, имеющие очень высокую степень сжатия. Таким образом, будущее за новыми алгоритмами с высокими требованиями к ресурсам и все более и более высокой степенью сжатия. Устаревают не только алгоритмы, но и типы информации, на которые они ориентированы. Так, на смену графике с малым числом цветов и неформатированному тексту пришли высококачественные изображения и электронные документы в различных форматах. Известные алгоритмы не всегда эффективны на новых типах данных. Это делает крайне актуальной проблему синтеза новых алгоритмов.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...