Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
karinok
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 13
#1

Найти максимальную цепочку нулей и едениц. - C++

26.05.2009, 00:21. Просмотров 760. Ответов 5
Метки нет (Все метки)

Нужна помощь.
Написана цепочка нулей и едениц в .txt файле. Пример: 11000110100001111100
Надо найти максимальные непрерывные цепочки едениц и нулей. Т.е. будет ответ четыре нуля и пять едениц.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2009, 00:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти максимальную цепочку нулей и едениц. (C++):

найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C++
Нужно найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. В чем ошибка ? #include <iostream> #include...

Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C++
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. Входные данные: В единственной строке...

Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C++
Здравствуйте, не могу понять в чём может быть ошибка :) Решаю олимпиадную задачу. Но система находит в тесте 5 не верный ответ) В...

Матрица L(n,k) состоит из нулей и единиц. Найти в ней самую длинную цепочку подряд стоящих нулей по горизонтал - C++
Помогите решить на C++ QtCreator

String char айти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C++
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц При этом в файл всегда сохраняется "1"....

Перевод едениц и нулей из блокнота в двоичный код - C++
Доброго времени суток , столкнулся с некоторой проблемой: Имеется .txt файл с записаной последовательностью нулей и едениц 11 00 10 01 ,...

5
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
26.05.2009, 00:32 #2
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
int ed=0,nul=0;
int ed_max=0,nul_max=0;
int posl_simv;
for(int i=0;i<n;i++)//n - число символов
{
  if(text[i]==1)
  {
    if(posl_simv==1)
    {
      ed++;
      if(ed>ed_max)
        ed_max=ed;      
    }
    else
      posl_simv=1;
  }
  else
  {
    if(posl_simv==0)
    {
      nul++;
      if(nul>nul_max)
        nul_max=nul;      
    }
    else
      posl_simv=0;
  }
}
Это для поиска в обычной переменной, немного переделайте и получите для файла (просто сам пока не очень хорошо работаю с файлами и рисковать, что-то советовать не буду )
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
26.05.2009, 01:08 #3
karinok,
Хм, задачка показалась интересной, вот подумал чутка...

Функция ищет всё под-последовательности из одинаковых элементов и выводит их на печать:

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 <algorithm>
#include <functional>
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <locale>
 
template <typename T, const size_t N>
inline size_t array_count(const T (&)[N])
{ return (N); }
 
// вывод на печать всех под-последовательностей
template <typename T>
void print_all_sequences(const T* arr, const size_t N)
{
    namespace lm = boost::lambda;
    typedef typename std::allocator<T>::const_pointer iterator;
 
    iterator curr = &arr[0], next;
    // ищем несовпадающие элементы.
    // они могут считаться признаком начала новой последовательности
    for(; (next = std::adjacent_find(curr, arr+N, lm::_1 != lm::_2)) != arr+N; std::advance(curr = next, 1))
    {
        const size_t curr_length = std::distance(curr, next) + 1; // +1 = учитываем первоначальный элемент в последовательности
        std::cout << "Найдена последовательность из элементов " << 
            *curr << " в количестве " << curr_length << " шт." << std::endl;
        std::advance(curr = next, 1);
    }
 
    // считаем количество элементов в самой последней последовательности
    const size_t last_length = std::distance(curr, next);
    std::cout << "Найдена последовательность из элементов " << 
        *curr << " в количестве " << last_length << " шт." << std::endl;
}
 
int main()
{
    setlocale(LC_ALL, ".1251");
    char arr[] = "11000110100001111100";
    const size_t N = array_count(arr);
    print_all_sequences(arr, N);
 
    return (0);
}
Делал больше для себя, так что использовал те средства, которые посчитал нужным.

Вывод программы:

Найдена последовательность из элементов 1 в количестве 2 шт.
Найдена последовательность из элементов 0 в количестве 3 шт.
Найдена последовательность из элементов 1 в количестве 2 шт.
Найдена последовательность из элементов 0 в количестве 1 шт.
Найдена последовательность из элементов 1 в количестве 1 шт.
Найдена последовательность из элементов 0 в количестве 4 шт.
Найдена последовательность из элементов 1 в количестве 5 шт.
Найдена последовательность из элементов 0 в количестве 2 шт.
Найдена последовательность из элементов в количестве 1 шт.
(последняя строчка - это оно посчитало символ терминатор, который всегда присутствует в конце строки)
0
karinok
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 13
26.05.2009, 01:10  [ТС] #4
В том и смысл. Не могу считать с файла. А если считываю, то полностью цепочку и не могу разбить на отдельные числа.
0
karinok
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 13
28.05.2009, 21:31  [ТС] #5
Так я и не могу эту задачку осилить. Кто сможет пояснить? Ответ от Рифифи слишком закручен. Должно быть все легче.
0
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
28.05.2009, 21:55 #6
Звезда в шоке
0
28.05.2009, 21:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2009, 21:55
Привет! Вот еще темы с ответами:

Найдите в матрице самую длинную цепочку подряд идущих нулей по горизонтали и вертикали - C++
Матрица состоит из нулей и единиц. Найдите в ней самую длинную цепочку подряд идущих нулей по горизонтали, вертикали. Удалить...

Найти номера строки не содержащей едениц в матрице - C++
Матрица K(m,m) состоит из нулей и единиц. Найти в ней номера хотя бы данной строки, не содержащих единицы, либо сообщить, что таковых нет....

В матрице из нулей и единиц найти квадрат заданного размера, состоящую целиком из нулей - C++
В матрице A (m, n), которая состоит из нулей и единиц, найти квадрат заданного размера (квадратную подматрицу), состоящую целиком из нулей ...

В заданной матрице состоящей из нулей и единиц найти квадратную подматрицу, состоящую целиком из нулей - C++
Черный квадрат. В матрице состоящей из 0 и 1 найти квадрат заданного размера(квадратную подматрицу), состоящий целиком из нулей.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru