Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_ООП.docx
Скачиваний:
41
Добавлен:
22.05.2015
Размер:
763.62 Кб
Скачать
  1. Разработка программного продукта

Текст, который нужно будет кодировать, получим из текстового поля “text_input” и запишем в строковую переменную “str1”. Далее будем пробегать по каждому символу в этой строке, получать текущий символ в строковую переменную “ch”. В том случае, если данный символ равен следующему, продолжаем поиск количества таких символов, начиная текущей позиции в строке.

После всего этого формируем кодируемую строку равную количеству найденных символов и самому символу, которых повторяется друг за другом n-e количество раз. Если найден только один символ строка принимает значение равное этому символу. Все выше описанные операции выполняются до тех пор, пока не будет достигнут конец файла.

Алгоритм кодирование информации представлен на рисунке 1.

Рисунок 1 – алгоритм кодирования

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

int i, k, j;

for (i = 0; i < str1.Length; ) { // от 0 до длины строки

  ch = str1.Substring(i, 1); // получаем текущий символ из строки str1

  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) //если текущий символ равен символу из строки 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;

Декодирование информации:

Кодировку успешно выполнили, теперь напишем декодировку строки, кодированную при помощи алгоритма RLE. Декодирование закодированной строки выполняется путем поиска числа, которое является количеством повторений символа и самого символа. И так, получаем закодированную строку из текстового поля “textBox1” и записывает полученный текст в переменную “str1”. При каждом проходе цикла, который выполняется, пока недостигнут последний символ, записываем в переменную “ch” текущий символ и если он является цифрой, выполняем поиск цифр идущих друг за другом. Тем самым последовательность найденных цифр будет представлять собой число, являющееся количеством повторений символа, идущего сразу же после этой последовательности. В конце в строковую переменную “str” записываем букву столько раз, сколько равно значение числа.

Алгоритм декодирования информации представлен на рисунке 2.

Рисунок 2 – алгоритм декодирования.

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

int i, k = 0, j;

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

  ch = str1.Substring(i, 1); // текущий символ i

  k = 0;

  s = "";

  if ("0123456789".Contains(ch)) { // если символ ch является цифрой

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

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

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

        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;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]