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

Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд - C++

Восстановить пароль Регистрация
 
alisa_yur
0 / 0 / 0
Регистрация: 13.04.2015
Сообщений: 11
10.06.2016, 10:12     Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд #1
Дано ряд символов S. Определить, верно ли, что в ряду s есть 5 букв е которые идут подряд
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2016, 10:12     Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд
Посмотрите здесь:

Дано натуральное число. Верно ли, что в его десятичной записи есть шесть единиц подряд? C++
C++ Дан текст. Верно ли, что в нем есть пять идущих подряд одинаковых символа
C++ Строки. Верно ли, что в последовательности s ,…, s имеется пять идущих подряд букв ‘e’
C++ Разработать функцию, определяющую, есть ли в строке S как минимум 5 подряд идущих латинских букв
C++ Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no_attention
27 / 27 / 13
Регистрация: 18.05.2016
Сообщений: 128
10.06.2016, 10:50     Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд #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
int main()
{
    char *s = "fdsfndsifaaageeeeenfdjgndfkjjjjj";
    for (uint i = 0; i < strlen(s) - 4; ++i)
    {
        if (s[i] == 'e')
        {
            bool is_ok = true;
            for (uint j = i + 1; j < i + 5; ++j)
            {
                if (s[i] != s[j])
                    is_ok = false;
            }
            if (is_ok)
            {
                cout << "Пять символов подряд есть." << endl;
                return 0;
            }
        }
    }
    cout << "Пяти символов подряд нет." << endl;
    return 0;
}
Добавлено через 8 минут
Так лучше.
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
int main()
{
    char *s = "ee";
    for (int i = 0; i < int(strlen(s) - 4); ++i)
    {
        if (s[i] == 'e')
        {
            bool is_ok = true;
            for (int j = i + 1; j < i + 5; ++j)
            {
                if (s[i] != s[j])
                    is_ok = false;
            }
            if (is_ok)
            {
                cout << "Пять символов подряд есть." << endl;
                return 0;
            }
            i += 4;
        }
    }
    cout << "Пяти символов подряд нет." << endl;
    return 0;
}
Байт
 Аватар для Байт
13947 / 8778 / 1221
Регистрация: 24.12.2010
Сообщений: 15,884
10.06.2016, 10:52     Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд #3
C++
1
if (strstr(s, "eeeee")) ...
no_attention
27 / 27 / 13
Регистрация: 18.05.2016
Сообщений: 128
10.06.2016, 10:57     Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд #4
Байт, чувствую себя глупо.
Байт
 Аватар для Байт
13947 / 8778 / 1221
Регистрация: 24.12.2010
Сообщений: 15,884
10.06.2016, 11:44     Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд #5
no_attention, Не убивайтесь. Функции strstr вы могли и не знать. И "все мы учились по-немногу..."
Но вот еще маленькое замечание общего порядка. Строки 9-14 вашего второго кода можно оформить так
C++
1
2
3
4
5
for (int j = i + 1; j < i + 5; ++j)
            {
                if (s[i] != s[j]) break;
            }
            if (j ==i+5)  // Значит, достигли благополучно конца цикла
И лишних переменных вводить не надо, и пустых прокручивание цикла нет (когда is_ok уже равно false)
Мелочи, конечно...
Yandex
Объявления
10.06.2016, 11:44     Определить, верно ли, что в строке s есть 5 букв "е", которые идут подряд
Ответ Создать тему

Метки
Строки
Опции темы

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