Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123

Определение промежутков в массиве

22.11.2013, 17:52. Показов 1768. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня,

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

Имеется у меня в наличие массив размерности 378000 строк.
В массив занесены значения событий, принимающие значения 1, если событие есть и 0, если события нет.

Нужно определить как часто меняются события между собой.

Вот пример массива:
1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 1 , где количество промежутков с единицами = 4, с нулями = 3

Меня интересует определение количества промежутков,которые содержат единицы.

Очень надеюсь на Вашу помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2013, 17:52
Ответы с готовыми решениями:

Определить количество промежутков монотонности в массиве
Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).

Определить количество промежутков монотонности в массиве
помогите пожалуйста, нужно сделать задачу: "Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на...

Определить количество промежутков монотонности в массиве и переставить местами первый и последний из них
Дан массив размера N. Определить количество его промежутков монотонности и переставить местами первый и последний из них. Пожалуйста,...

4
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.11.2013, 18:41
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
   std::vector<int> v {1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,1};
   v.erase(std::unique(v.begin(), v.end()), v.end());
   std::cout << "1: " << std::count(v.begin(), v.end(), 1) << std::endl;
   std::cout << "0: " << std::count(v.begin(), v.end(), 0) << std::endl;
 
   return 0;
}
0
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123
22.11.2013, 18:51  [ТС]
Цитата Сообщение от DiffEreD Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
   std::vector<int> v {1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,1};
   v.erase(std::unique(v.begin(), v.end()), v.end());
   std::cout << "1: " << std::count(v.begin(), v.end(), 1) << std::endl;
   std::cout << "0: " << std::count(v.begin(), v.end(), 0) << std::endl;
 
   return 0;
}
К сожалению, так мне не подойдет, так как нужно будет алгоритм портировать и в матлаб, где будет считаться мой mat file. Мне бы алгоритм доступный без спец. средств. Хотя бы логику понять
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.11.2013, 19:17
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
#include <iostream>
 
namespace my
{
template<class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last)
{
    if (first == last)
        return last;
 
    ForwardIt result = first;
    while (++first != last) {
        if (!(*result == *first)) {
            *(++result) = *first;
        }
    }
    return ++result;
}
 
template<class InputIt, class T>
int count(InputIt first, InputIt last, const T& value)
{
    int ret = 0;
    for (; first != last; ++first) {
        if (*first == value) {
            ret++;
        }
    }
    return ret;
}
}
 
int main()
{
   int a[] {1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,1};
   int* p = my::unique(&a[0], &a[sizeof(a) / sizeof(a[0])]);
   std::cout << "1: " << my::count(&a[0], p, 1) << std::endl;
   std::cout << "0: " << my::count(&a[0], p, 0) << std::endl;
 
   return 0;
}
0
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 123
22.11.2013, 19:34  [ТС]
Цитата Сообщение от DiffEreD Посмотреть сообщение
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
#include <iostream>
 
namespace my
{
template<class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last)
{
    if (first == last)
        return last;
 
    ForwardIt result = first;
    while (++first != last) {
        if (!(*result == *first)) {
            *(++result) = *first;
        }
    }
    return ++result;
}
 
template<class InputIt, class T>
int count(InputIt first, InputIt last, const T& value)
{
    int ret = 0;
    for (; first != last; ++first) {
        if (*first == value) {
            ret++;
        }
    }
    return ret;
}
}
 
int main()
{
   int a[] {1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,1};
   int* p = my::unique(&a[0], &a[sizeof(a) / sizeof(a[0])]);
   std::cout << "1: " << my::count(&a[0], p, 1) << std::endl;
   std::cout << "0: " << my::count(&a[0], p, 0) << std::endl;
 
   return 0;
}
Спасибо Вам огромное мне конечно, как новичку в с++ сложно так сразу понять логику, но я разберусь.

А, что и как нужно изменить в коде, чтобы проделать это с другим массивом вида:
{ 0, 0, 0, 0, 55, 56, 67, 83, 1, 0, 0, 0, 5, 7, 9, 0}
т.е задача сводится к тому, чтобы опредилить число интервалов отличных от нуля в данном случае их 2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2013, 19:34
Помогаю со студенческими работами здесь

Определение количества элементов в массиве
Как определить количество элементов динамическом и статическом массивах? Спасибо

определение кол-ва участков м массиве
Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают1|убывают2.

Определение кратности позиции в массиве
Есть задача, задание: Разработать программу, вычисляющую сумму элементов массива, стоящих на нечетных местах. Количество элементов в...

Определение количества единиц в массиве
Подскажите пожалуйста как определить количество единиц в массиве? К примеру у меня есть массив 101011, надо получить 4.

Определение элемента в одномерном массиве
Всем привет. Надо в одномерном массиве определить значение и индекс наименьшего позитивного элемента, анализировать все элементы массива. И...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru