Реализовать бит-стаффинг, т. е. найти в сообщении пять единиц и после них вставить ноль - C#

Узнай цену своей работы

Формулировка задачи:

Нужно сделать бит-стаффинг, то есть найти в сообщении пять единиц и после них вставить ноль. Например: Входное сообщение 10011111101111100 Выходное сообщение 10011111

0

1011111

0

00 Пытался сделать вот так:
private void button1_Click(object sender, EventArgs e)
        {
            byte q = 0;
            string s = textBox1.Text;
            string ps = "11111";
            char s0 = ps[0];
            char s1 = ps[1];
            StringBuilder Rez = new StringBuilder(s);
            for (int i = 1; i < s.Length; i++)
            {
                switch (q)
                {
                    case 0:
                        {
                            if (s[i] == s0)
                                q = 1;
                            else
                                q = 0;
                        }
                        break;
                    case 1:
                        {
                            if (s[i] == s0) q = 1;
                            else
                                if (s[i] == s1) q = 2;
                                else q = 0;
                        }
                        break;
                    case 2:
                        {
                            if (s[i] == s0) q = 1;
                            else q = 0;
                        }
                        break;
                }
            }
            string fullString = textBox1.Text;
            string subString = "11111";
            int index = 0;
            while (fullString.IndexOf(subString, index) >= 0)
            {
                index = fullString.IndexOf(subString, index);
                fullString = fullString.Remove(index, 5);
                fullString = fullString.Insert(index, "111110");
                break;
            }
            textBox3.Text = fullString;
        }
Но проблема в том, что в цикле while с break прога заменяет лишь первые пять единиц. Без break получается бесконечный цикл, так как он находит 11111 заменяет на 111110 и снова находит то что заменил и вставляет туда же 1111100 и так бесконечно. Если сделать так fullString = fullString.Insert(index, "******"), то прога работает прекрасно без break! С break естественно заменяет только первые найденные.

Решение задачи: «Реализовать бит-стаффинг, т. е. найти в сообщении пять единиц и после них вставить ноль»

textual
Листинг программы
private void button1_Click(object sender, EventArgs e)
{
   string s = textBox1.Text;
   s = s.Replace("11111", "111110");
   textBox3.Text = s;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы