Реализовать бит-стаффинг, т. е. найти в сообщении пять единиц и после них вставить ноль - C#
Формулировка задачи:
Нужно сделать бит-стаффинг, то есть найти в сообщении пять единиц и после них вставить ноль.
Например:
Входное сообщение 10011111101111100
Выходное сообщение 10011111
Но проблема в том, что в цикле while с break прога заменяет лишь первые пять единиц. Без break получается бесконечный цикл, так как он находит 11111 заменяет на 111110 и снова находит то что заменил и вставляет туда же 1111100 и так бесконечно.
Если сделать так fullString = fullString.Insert(index, "******"), то прога работает прекрасно без break! С break естественно заменяет только первые найденные.
0
10111110
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;
- }
Решение задачи: «Реализовать бит-стаффинг, т. е. найти в сообщении пять единиц и после них вставить ноль»
textual
Листинг программы
- private void button1_Click(object sender, EventArgs e)
- {
- string s = textBox1.Text;
- s = s.Replace("11111", "111110");
- textBox3.Text = s;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д