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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
22.01.2013, 23:28     Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц #1
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц.
Входные данные:
В единственной строке входного файла INPUT.TXT записана последовательность нулей и единиц (без пробелов). Суммарное количество цифр не превышает 100.
Выходные данные:
В единственную строку выходного файла OUTPUT.TXT нужно вывести искомую длину цепочки нулей.

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
#include <iostream>
#include <iostream>
#include <fstream>
 
using namespace std;
 
int i=0, schet, num=0, dlina;
char stroka[101];
 
int main(){ 
    ifstream in("INPUT.TXT");
    in >> stroka;
    in.close();
    dlina=strlen(stroka);
    while (i<dlina){
    if (stroka[i] == 0) schet+=1;
    else schet=0;
    if (schet>num) num=schet;
    i+=1;   
    }
    ofstream out("OUTPUT.TXT");
    out << num;
    out.close();
    return 0;
}
Прошу помощи. Объясните, если не трудно, почему не работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2013, 23:28     Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц
Посмотрите здесь:

C++ Найти максимальную цепочку нулей и едениц.
В последовательности найти наиболее длинную последовательность подряд идущих нулей C++
Найти самую длинную возрастающую цепочку простых чисел C++
найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц C++
C++ Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц
Цикл: Найти самую длинную неубывающую цепочку чисел C++
В матрице из нулей и единиц найти квадрат заданного размера, состоящую целиком из нулей C++
Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Glimpse
 Аватар для Glimpse
9 / 9 / 2
Регистрация: 21.01.2013
Сообщений: 20
23.01.2013, 13:29     Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц #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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{ 
    char ch; // считываемый символ
    int count = 0; // определяет кол-во таких символов
    char stroka[100]; // массив, в который будут записаны эти символы для дальнейшей работы с ними
    
    ifstream fin("input.txt"); // открываем файл для чтения
    // посимвольно считываем из файла, пока не будет достигнут конец файла 
    while((fin.get(ch)) && (!fin.eof()))
    {
        stroka[count] = ch;
        count++;
    }
 
    int countZero = 0; // счётчик для количества нулей
    int zero[50]; // массив, каждый элемент которого будет равен количеству нулей от одной ближайшей единицы до другой
    // например, в последовательности 1000010001000000001 zero[0] = 4, zero[1] = 3, zero[2] = 8
    int j = 0;
    // проходим по массиву stroka, создавая при этом массив zero, о содержимом которого было сказано выше
    for(int i = 0; i < count; i++)
    {
        if (stroka[i] == '0')
            countZero++;
        else
        {
            zero[j] = countZero;
            countZero = 0;
            j++;
        }
    }
 
    // в массиве zero находим максимум(это и будет ответ)  и записываем его в output.txt
    int max = zero[0];
    for(int i = 0; i < j; i++)
    {
        if (zero[i] > max)
            max = zero[i];
    }
 
    ofstream fout("output.txt");
    fout << max;
 
    fin.close();
    fout.close();
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
23.01.2013, 15:11     Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main(void)
{
    int max = 0, i = 0;
    char x;
    freopen("INPUT.TXT", "r", stdin);
    freopen("OUTPUT.TXT", "w", stdout);
    while(scanf("%c", &x) != EOF)
    {
        if(x - '0' == 1)
        {
            if (i > max)
                max = i;
            i = 0;
        }
        else
            i++;
    }
    printf("%d", max);
    return 0;
}
Yandex
Объявления
23.01.2013, 15:11     Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц
Ответ Создать тему
Опции темы

Текущее время: 06:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru