Реализовать бит-стаффинг, т. е. найти в сообщении пять единиц и после них вставить ноль - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д