Привет, пишу небольшую программу, возникла проблема в реализации. У меня есть строка двоичного кода. Мне посчитать подряд идущие 0 и 1. Примерно должно выглядеть вот так: Входные данные: 110111000 Что должно быть в результате: 1201303 Заранее спасибо.
Сплитишь строку в массив и считаешь посимвольно, аля если некст число = предыдущему, то n++, если нет, то выводишь число и i, и перескакиваешь на некст позицию
Так у тебя проблемка в реализации? или ты хочешь чтобы за тебя написали? DenZ2281337, не надо сплить в массив - можно бежать прямо по строке точно также как по массиву.
Так должно же вывести 2133 --- Сообщение объединено с предыдущим 23 фев 2022 Это преобразование Do2 вродь называется, погугли --- Сообщение объединено с предыдущим 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; Код 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; Еле нашёл