Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

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

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

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

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

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

Найти максимальную оценку студента и вывести его ID потом фамилию и максимальную оценку - C++
Здравствуйте! Мне нужно найти максимальную оценку студента и вывести его ID потом фамилию и макс оценку Вот образец INPUT: 3 1...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
  }
}
Это для поиска в обычной переменной, немного переделайте и получите для файла (просто сам пока не очень хорошо работаю с файлами и рисковать, что-то советовать не буду )
Rififi
2359 / 1054 / 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 шт.
(последняя строчка - это оно посчитало символ терминатор, который всегда присутствует в конце строки)
karinok
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 13
26.05.2009, 01:10  [ТС]     Найти максимальную цепочку нулей и едениц. #4
В том и смысл. Не могу считать с файла. А если считываю, то полностью цепочку и не могу разбить на отдельные числа.
karinok
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 13
28.05.2009, 21:31  [ТС]     Найти максимальную цепочку нулей и едениц. #5
Так я и не могу эту задачку осилить. Кто сможет пояснить? Ответ от Рифифи слишком закручен. Должно быть все легче.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2009, 21:55     Найти максимальную цепочку нулей и едениц.
Еще ссылки по теме:

Найти наиболее длинную цепочку в двумерном массиве - C++
Здравствуйте. Помогите пожалуйста решить одну задачку на любом языке программировании (желательно PHP): в целочисленном двумерном массиве...

Найти самую длинную возрастающую цепочку простых чисел - C++
Привет всем Решаю задачку: Найти самую длинную возрастающую цепочку простых чисел В заданном бинарном файле необходимо ...

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

В матрице состоящей из цифр найти цепочку составляющую заданное число - C++
Дана квадратная матрица F, состоящая из цифр. Найти в ней цепочку цифр, составляющую заданное число D, 9&lt;D&lt;100000. Цепочку составляют...

В одномерном массиве найти цепочку максимальной длины из четных элементов - C++
Нужно написать: целочисленный массив из n элементов, заполненный случайными числами от a до b, найти цепочку максимальной длины из четных...

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


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

Или воспользуйтесь поиском по форуму:
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
28.05.2009, 21:55     Найти максимальную цепочку нулей и едениц. #6
Звезда в шоке
Yandex
Объявления
28.05.2009, 21:55     Найти максимальную цепочку нулей и едениц.
Ответ Создать тему
Опции темы

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