2 / 2 / 0
Регистрация: 06.06.2021
Сообщений: 14
1

Определить все последовательности единиц, идущие подряд

14.06.2021, 23:05. Показов 1425. Ответов 2

Добрый вечер! Прошу помочь с заданием.

Дана битовая последовательность размера N. Реализовать функцию определения всех последовательностей единиц, идущих подряд. Для каждой последовательности вывести номер бита начала (от 0) и количество бит. Последовательности размером в 1 не учитывать.
Важное условие: обязательно использование только поразрядных операций для выполнения задания. Математические операции с индексами и счетчиками разрешены.

Вход:
N = 22
последовательность = 1110 1011 1100 0000 0111 11..
Выход:
0, 3
6, 4
17, 5
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2021, 23:05
Ответы с готовыми решениями:

Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX )
Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не...

Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX )
Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не...

Функция удаляющая из строки все подряд идущие нули
Нужно написать функцию, которая из стринга удаляет все подряд идущие 0 В чем ошибка? #include...

Исключить все повторяющиеся, идущие подряд элементы дека
Создать список из целых чисел. Подсчитать количество пар соседних элементов, которые совпадают...

2
21 / 12 / 9
Регистрация: 02.03.2019
Сообщений: 45
15.06.2021, 12:07 2
Лучший ответ Сообщение было отмечено ks1109 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string>
 
using namespace std;
 
void func(int seq) {
    int cnt = 0;
    int start = 0;
    for(int pos = 0; pos < 23; pos++) {
        bool bit = seq & (1 << pos);
        if (bit) {
            if (cnt == 0) {
                start = pos;
            }
            cnt++;
        } else { // if bit == 0
            if (cnt > 1) {
                cout << start << ", " << cnt << endl;
            }
            cnt = 0;
        }
    }
}
 
int read_string_into_bits(string s) {
    int seq = 0;
    for(int i = 0, pos = 0; i < (int)s.size() ; i++) {
        if (s[i] == '1') {
            seq |= (1 << pos);
            pos++;
        } else if (s[i] == '0') {
            pos++;
        }
    }
    return seq;
}
 
int main() {
    int seq = read_string_into_bits("1110 1011 1100 0000 0111 11");
    func(seq);
 
    return 0;
}
1
2 / 2 / 0
Регистрация: 06.06.2021
Сообщений: 14
15.06.2021, 14:54  [ТС] 3
alexs2007, большое спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2021, 14:54
Помогаю со студенческими работами здесь

Строка: преобразовать все идущие подряд пробелы в один
Удали пробелы Дана строка, Вам требуется преобразовать все идущие подряд пробелы в один. Вхідні...

Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n)
Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m&lt;=n)...

В символьной строке удалить все лишние подряд идущие пробелы.
помогите пожалуйста написать программу:В символьной строке удалить все лишние подряд идущие пробелы.

В символьной строке удалить все лишние подряд идущие пробелы.
Помогите пожалуйста написать программу,Каким образом можно осуществить: В символьной строке удалить...

Определить, есть ли в заданном числе две тройки, идущие подряд
Требуется вывести «YES», если в N есть две цифры 3, идущие подряд, или «NO», если нет. Кавычки...

Определить k-ю цифру в последовательности, в которой выписаны подряд все двузначные числа
Даны целое число k, 1&lt;k&lt;180 и последовательность цифр 10111213...9899, в которой выписаны подряд...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru