Загрузка...

Преобразование 2-го кода

Тема в разделе C# создана пользователем wolf228z 21 фев 2022. 178 просмотров

  1. wolf228z
    wolf228z Автор темы 21 фев 2022 46 27 окт 2018
    Привет, пишу небольшую программу, возникла проблема в реализации. У меня есть строка двоичного кода. Мне посчитать подряд идущие 0 и 1. Примерно должно выглядеть вот так:
    Входные данные: 110111000
    Что должно быть в результате: 1201303
    Заранее спасибо.
     
  2. DenZ2281337
    DenZ2281337 21 фев 2022 Заблокирован(а) 2 5 авг 2019
    Сплитишь строку в массив и считаешь посимвольно, аля если некст число = предыдущему, то n++, если нет, то выводишь число и i, и перескакиваешь на некст позицию
     
    1. vtlstolyarov
      Так у тебя проблемка в реализации? или ты хочешь чтобы за тебя написали? DenZ2281337, не надо сплить в массив - можно бежать прямо по строке точно также как по массиву.
  3. Yotic
    Yotic 23 фев 2022 Ебашу на C# всё что захотите(Разноцветное) 43 13 янв 2021
    Так должно же вывести 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;
    Еле нашёл
     
Загрузка...
Top