Привет, пишу небольшую программу, возникла проблема в реализации. У меня есть строка двоичного кода. Мне посчитать подряд идущие 0 и 1. Примерно должно выглядеть вот так: Входные данные: 110111000 Что должно быть в результате: 1201303 Заранее спасибо.
Сплитишь строку в массив и считаешь посимвольно, аля если некст число = предыдущему, то n++, если нет, то выводишь число и i, и перескакиваешь на некст позицию
Так у тебя проблемка в реализации? или ты хочешь чтобы за тебя написали? DenZ2281337, не надо сплить в массив - можно бежать прямо по строке точно также как по массиву.
Так должно же вывести 2133 The post was merged to previous Feb 23, 2022 Это преобразование Do2 вродь называется, погугли The post was merged to previous Feb 23, 2022 bool nigga = str[0] == '-' ? false : true; str = nigga ? str : str.Remove(0, 1); str = Convert.ToString(int.Parse(str), 2); string result = str[0] < 5 ? "0" : "5"; bool pos = str[0] < 5 ? false : true; for (int o = 1; o < str.Length; o++) if (str[o] == '0') { if (result[result.Length > 0 ? result.Length - 1 : 0] == '4') result += '0'; else if (!pos) { List<char> chars = result.ToList(); chars[chars.Count - 1] = (char)((int)chars[chars.Count - 1] + 1); result = new string(chars.ToArray()); } else result += '0'; pos = false; } else if (str[o] == '1') { if (result[result.Length > 0 ? result.Length - 1 : 0] == '9') result += '5'; else if (pos) { List<char> chars = result.ToList(); chars[chars.Count - 1] = (char)((int)chars[chars.Count - 1] + 1); result = new string(chars.ToArray()); } else result += '5'; pos = true; } return nigga ? result : "-" + result; Code bool nigga = str[0] == '-' ? false : true; str = nigga ? str : str.Remove(0, 1); str = Convert.ToString(int.Parse(str), 2); string result = str[0] < 5 ? "0" : "5"; bool pos = str[0] < 5 ? false : true; for (int o = 1; o < str.Length; o++) if (str[o] == '0') { if (result[result.Length > 0 ? result.Length - 1 : 0] == '4') result += '0'; else if (!pos) { List<char> chars = result.ToList(); chars[chars.Count - 1] = (char)((int)chars[chars.Count - 1] + 1); result = new string(chars.ToArray()); } else result += '0'; pos = false; } else if (str[o] == '1') { if (result[result.Length > 0 ? result.Length - 1 : 0] == '9') result += '5'; else if (pos) { List<char> chars = result.ToList(); chars[chars.Count - 1] = (char)((int)chars[chars.Count - 1] + 1); result = new string(chars.ToArray()); } else result += '5'; pos = true; } return nigga ? result : "-" + result; Еле нашёл