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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
ansi_str
56 / 56 / 1
Регистрация: 22.09.2011
Сообщений: 316
#1

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

10.06.2012, 10:07. Просмотров 1994. Ответов 9
Метки нет (Все метки)

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

В единственной строке входного файла 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
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    
    unsigned int lengthZero = 0;
    unsigned int lengthCounter = 0;
    char* charInputArray = new char[101];
 
    for(unsigned int  counter = 0; counter < 101; counter++ )
    {
        scanf("%c", &charInputArray[counter]);
 
        if(charInputArray[counter] == '0')
        {
            lengthCounter++;
        }
        else
        {
            lengthCounter = 0;
        }
 
        if(lengthCounter > lengthZero)
        {
            lengthZero = lengthCounter;
        }
    }
 
    printf("%d",lengthZero);
    
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 10:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц (C++):

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

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

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

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

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

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

9
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 10:18 #2
Цитата Сообщение от ansi_str Посмотреть сообщение
{ lengthCounter++; } else { lengthCounter = 0; }
В этом.
Цитата Сообщение от ansi_str Посмотреть сообщение
if(lengthCounter > lengthZero) { lengthZero = lengthCounter; }
И в этом, завсит от того, что вы хотите сделать.

Добавлено через 4 минуты
Хотя, может и нет, все зависит от значения фразы
Цитата Сообщение от ansi_str Посмотреть сообщение
искомую длину цепочки нулей
0
ansi_str
56 / 56 / 1
Регистрация: 22.09.2011
Сообщений: 316
10.06.2012, 10:21  [ТС] #3
Цитата Сообщение от Jtalk Посмотреть сообщение
В этом.

И в этом, завсит от того, что вы хотите сделать.

Добавлено через 4 минуты
Хотя, может и нет, все зависит от значения фразы
Нужно найти в последовательности самую длинную последовательность нулей,
Например:
Искомая последовательность: 00101110000110
Длина: 4
0
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 10:28 #4
Возможно, в файле меньше 100 элементов (не превышает), scanf начинает падать и программа считает мусор из chanInputArray
0
ansi_str
56 / 56 / 1
Регистрация: 22.09.2011
Сообщений: 316
10.06.2012, 11:27  [ТС] #5
А как тогда узнать размер(колличество элементов в исходной последовательности)?
0
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 11:32 #6
Можно просто проверять возвращаемое значение scanf на EOF, скорее всего.
1
ansi_str
56 / 56 / 1
Регистрация: 22.09.2011
Сообщений: 316
10.06.2012, 12:26  [ТС] #7
Цитата Сообщение от Jtalk Посмотреть сообщение
Можно просто проверять возвращаемое значение scanf на EOF, скорее всего.
Возможно у них косяк в ситеме, но всё равно тест 5 не проходит
На паскале переписал, всё работает
0
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 12:54 #8
Попробуйте getchar вместо scanf.
0
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
10.06.2012, 15:20 #9
ansi_str, как-то так

Добавлено через 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <cstring>
 
using namespace std;
 
int main()
{
    cout.flush();
    int valZero = 0;
    vector<int> vInt;
    string str;
 
    ifstream inFile("INPUT.TXT");
    inFile >> str;
 
    char *data = new char[str.length()+1];
    strcpy(data, str.c_str());
 
    for (size_t i=0; i<str.length()+1; ++i)
        cout << data[i];
    cout << endl;
 
    for (size_t i = 0; i<str.length()+1; ++i)
    {
        if (data[i] == '0')
            valZero++;
        else
        {
            if (valZero != 0)
                vInt.push_back(valZero);
            valZero = 0;
        }
    }
 
    for (size_t i=0; i<vInt.size(); ++i)
        cout << vInt.at(i) << "   ";
 
    int max = vInt.at(0);
    for (size_t i = 1; i<vInt.size(); ++i)
        if (vInt.at(i) > max)
            max = vInt.at(i);
 
    cout << "Max value - " << max <<endl;
 
    ofstream outFile("OUTPUT.TXT");
    outFile << max;
 
    inFile.close();
    outFile.close();
 
    delete data;
 
    return 0;
}
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.06.2012, 15:24 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream>
 
char a, m, l;
 
int main()
{
    std:: fstream v("input.txt"), o("output.txt", std::ios::out);
    
    for ( ; v >> a; l > m ? m = l : 0)
        ++l *= a < 49;
    
    o << +m;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 15:24
Привет! Вот еще темы с ответами:

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

Удалить самую длинную последовательность нулей - C++
Дан массив из N элементов. Удалить самую длинную последовательность нулей (одинаковой последовательности нет). В первой строчке...

В последовательности найти наиболее длинную последовательность подряд идущих нулей - C++
Дана последовательность из n вещественных чисел. Найти наиболее длинную последовательность подряд идущих нулей.

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


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
10.06.2012, 15:24
Ответ Создать тему
Опции темы

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