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

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

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

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

0

1011111

0

00 Пытался сделать вот так:
Листинг программы
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. byte q = 0;
  4. string s = textBox1.Text;
  5. string ps = "11111";
  6. char s0 = ps[0];
  7. char s1 = ps[1];
  8. StringBuilder Rez = new StringBuilder(s);
  9. for (int i = 1; i < s.Length; i++)
  10. {
  11. switch (q)
  12. {
  13. case 0:
  14. {
  15. if (s[i] == s0)
  16. q = 1;
  17. else
  18. q = 0;
  19. }
  20. break;
  21. case 1:
  22. {
  23. if (s[i] == s0) q = 1;
  24. else
  25. if (s[i] == s1) q = 2;
  26. else q = 0;
  27. }
  28. break;
  29. case 2:
  30. {
  31. if (s[i] == s0) q = 1;
  32. else q = 0;
  33. }
  34. break;
  35. }
  36. }
  37. string fullString = textBox1.Text;
  38. string subString = "11111";
  39. int index = 0;
  40. while (fullString.IndexOf(subString, index) >= 0)
  41. {
  42. index = fullString.IndexOf(subString, index);
  43. fullString = fullString.Remove(index, 5);
  44. fullString = fullString.Insert(index, "111110");
  45. break;
  46. }
  47. textBox3.Text = fullString;
  48. }
Но проблема в том, что в цикле while с break прога заменяет лишь первые пять единиц. Без break получается бесконечный цикл, так как он находит 11111 заменяет на 111110 и снова находит то что заменил и вставляет туда же 1111100 и так бесконечно. Если сделать так fullString = fullString.Insert(index, "******"), то прога работает прекрасно без break! С break естественно заменяет только первые найденные.

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

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

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


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

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

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы