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

Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину - C++

Восстановить пароль Регистрация
 
xcuube
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 5
19.07.2016, 21:13     Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину #1
Доброго времени суток! нужно найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину, у меня в алгоритме что-то не так, работает через раз или косячно. Помогите, пожалуйста

C++ (Qt)
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
    void Find_prob()
    {
 
        int check = Word.find(" ");
        if (check == -1) cout << "probelov net";
        else
        {
            string bukva;
            int i = 0, c = 0, max = 0;
            int *P = new int;
            int len_str = Word.length();
 
            for (int i = 0; i < len_str; i++)
            {
                bukva = Word.substr(i, 1);
                if (bukva == " ")
                {
                    if (P[c] < 0) P[c] = 0;
                    P[c]++;
                }
                else c++;
            }
            
            for (int i = 0; i < c; i++)
            {
                if (P[i] > P[i + 1])
                    max = i;
            }
            
            cout << "kol-vo = " << P[max] << endl <<  "mesto = " << max;
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2016, 21:13     Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину
Посмотрите здесь:

Определить длину самой большой последовательности подряд идущих согласных C++
C++ Определить длину самой длинной подстроки из подряд стоящих букв «е»
Определить длину самой длинной цепочки единиц в переменной unsigned long a; C++
Нужно найти длину самой длинной подпоследовательности, в которой равное количество 0 и 1. C++
Найти длину самой длинной последовательности подряд идущих нулевых элементов массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Eaniconer
1 / 1 / 1
Регистрация: 19.07.2016
Сообщений: 6
20.07.2016, 08:08     Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Kind of ...

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
#include <iostream>
#include <stdio.h>
#include <string>
 
int main() {
    
    std::string str;
    std::cout << "Enter sentence: ";
    std::getline(std::cin, str);
 
    // Переменные в которых будем хранить ответ
    int idx = -1;
    int len = 0;
 
    // Дополнительные переменные
    int cur_idx, cur_len = 0;
 
    // Обход строки
    for (int i = 0; i < str.length(); i++) {
        
        // текущий символ пробел
        if (' ' == str[i]) 
        {
            if (0 == cur_len) cur_idx = i;
            cur_len++;
        }
        
        // текущий символ не пробел
        // или текущий символ пробел и он последний в строке
        if (' ' != str[i] || (' ' == str[i] && i == str.length() - 1)) {
            if (cur_len > len) {
                idx = cur_idx, len = cur_len;
            }
            cur_len = 0;
        }
    
    }
 
    // Вывод результата
    std::cout << "Index: " << idx << ", Length: " << len << std::endl;
 
    
 
}
xcuube
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 5
20.07.2016, 10:42  [ТС]     Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину #3
спасибо!
Ferrari F1
Заблокирован
295 / 281 / 62
Регистрация: 27.01.2015
Сообщений: 1,894
Записей в блоге: 1
Завершенные тесты: 1
20.07.2016, 11:30     Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину #4
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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string str(" 1   1  1     ");
    //getline(cin, str);
 
    decltype(str.size()) pos;
    if ((pos = str.find_first_of(' ')) != string::npos)
    {
        auto count(0u), cur(0u), index(0u);
 
        while (pos != string::npos)
        {
            while (str[pos] == ' ' && pos != str.size())
            {
                ++cur, ++pos;
            }
 
            if (cur > count)
                count = cur, index = pos - cur;
 
            cur = 0;
 
            pos = str.find_first_of(' ', pos);
        }
 
        cout << index << ' ' << count << endl;
    }
    else
        cout << "No spaces" << endl;
 
    system("pause");
}
Yandex
Объявления
20.07.2016, 11:30     Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину
Ответ Создать тему
Опции темы

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