Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 07.09.2020
Сообщений: 21
1

Дана строка и число n. Верно ли, что в ней есть по крайней мере n подряд идущих букв a

08.09.2020, 10:45. Показов 775. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка и число n. Верно ли, что в ней есть по крайней мере n подряд идущих букв a.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2020, 10:45
Ответы с готовыми решениями:

Дана строка и число n. Верно ли, что в ней есть по крайней мере n подряд идущих букв a
Дана строка и число n. Верно ли, что в ней есть по крайней мере n подряд идущих букв с помогите...

Верно ли, что в строке есть по крайней мере n подряд идущих букв a.
Дана строка и число n. Верно ли, что в ней есть по крайней мере n подряд идущих букв a.

Верно ли, что в стоке есть по крайней мере "N" подряд идущих букв "А"
Даны строка и число "N". Верно ли, что в ней есть, по крайней мере, "N" подряд идущих букв "А". ...

Сделать большими все буквы в тех словах, в которых есть по крайней мере одна пара подряд идущих гласных букв
Здравствуйте. Помогите, пожалуйста, с C#кой прогой. Надо сделать программу, обеспечивающую...

7
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
08.09.2020, 12:19 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
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string str = "shjdkfajhsddjfffsssaaaaaaajhjkaaaag";
    int n = 6;
    bool process_scheta = false;
    int skolko_naschitali = 0;
    bool imeetsa_li = false;
    for(size_t i = 0; i < str.length(); i++) {
        if (process_scheta) {
            if(str[i] == 'a') {
                skolko_naschitali++;
                if(skolko_naschitali >= n) {
                    imeetsa_li = true;
                    break;
                }
            } else {
                skolko_naschitali = 0;
                process_scheta = false;
            }
        } else {
            if(str[i] == 'a') {
                skolko_naschitali = 1;
                process_scheta = true;
            }
        }
    }
    if(imeetsa_li) cout << "yes";
    else cout << "no";
    cout << '\n';
    return 0;
}
2
223 / 188 / 97
Регистрация: 15.04.2018
Сообщений: 718
08.09.2020, 12:42 3
Воспользовался кодом palva, чутка упростив

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
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string str = "shjdkfajhsddjfffsssaaaaaaajhjkaaaag";
    int n = 6;
    int current_counter = 0; //сколько насчитано на данной итерации
    bool result = false; // что в итоге
    for(size_t i = 0; i < str.length(); i++) {
            if(str[i] == 'a') { //если буква а
                current_counter++; // увеличиваем счетчик на 1
                if(current_counter >= n) { //если больше или 6
                    result = true; //ответ нашли
                    break; //перестаем искать
                }
            }
            else //если не буква а
            {
                current_counter = 0; //обнуляем счетчик 
            }
    }
    if(result) 
        cout << "exists";
    else
        cout << "not exists";
    cout << '\n';
    return 0;
}
1
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
08.09.2020, 14:04 4
Воспользовался кодом mvngr, и оформил в виде функции:

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
#include <iostream>
#include <string_view>
 
bool exists(size_t n, std::string_view str)
{
    size_t s = 0;  // сколько насчитано на данной итерации
    for (const char &ch : str) {
        if (ch == 'a') {      // если буква а
            s++;              // увеличиваем счетчик на 1
            if (s >= n) {     // если больше или n
                return true;  // ответ нашли
            }
        }
        else {      // если не буква а
            s = 0;  // обнуляем счетчик
        }
    }
    return false;
}
 
int main()
{
    if (exists(6, "shjdkfajhsddjfffsssaaaaaaajhjkaaaag")) {
        std::cout << "exists\n";
    }
    else {
        std::cout << "not exists\n";
    }
    return 0;
}
2
mvngr
08.09.2020, 14:58
  #5

Не по теме:

AlexVRud, хех, оценил

А вообще юзать стринг вью из 17 стандарта, когда всё остальное можно выполнить на 11 стандарте как-то странновато

Тем более у вас тут нет constexpr функции, чтобы так всё усложнять

p.s. До 17 стандарта так и не добрался :(

0
AlexVRud
08.09.2020, 15:29
  #6

Не по теме:

mvngr, так сегодня уже C++20 утверждён и отправлен на проверку орфографии. А string_view лучше всего подходит для обработки константных строк. Т.к. появляется возможность через одну реализацию обрабатывать не только std::string или char*, но и подстроки. Хотя без Life Time это очень опасная штука.

0
823 / 626 / 321
Регистрация: 24.02.2017
Сообщений: 2,209
08.09.2020, 21:34 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main(){
    string str = "shjdkfajhsddjfffsssaaaaaaajhjkaaaag";
    string s;
    int n = 6;
 
   while(n--)
        s+='a';
   str.find(s)!=string:: npos ? cout<<"yes" : cout<<"no";
   return 0;
}
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
09.09.2020, 01:14 8
Цитата Сообщение от повар1 Посмотреть сообщение
C++
1
2
while(n--)
        s+='a';
У класса string имеется конструктор
C++
1
string s(n, 'a');
1
09.09.2020, 01:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2020, 01:14
Помогаю со студенческими работами здесь

Дана строка текста. Выяснить, верно ли, что в нем есть пять идущих подряд одинаковых чисел
Дана строка текста. Выяснить, верно ли, что в нем есть пять идущих подряд одинаковых чисел. Найти...

Дана строка символов S. Посчитать наибольшее число букв «а», идущих подряд в данной строке
Дана строка символов S. Посчитать наибольшее число букв «а», идущие подряд в данной строке.

Даны натуральное число n, символы s1,...,sn. Выяснить,верно ли,что в последовательности s1,...,sn имеются пять идущих подряд букв е
даны натуральное число n, символы s1,...,sn. Выяснить,верно ли,что в последовательности s1,...,sn...

Верно ли, что введённое число содержит по крайней мере две одинаковых цифры
Условие: Напишите программу, которая определяет, верно ли, что введённое число содержит по крайней...

Дана строка, найти наибольшее количество цифр, идущих в ней подряд
Не могу решить простую задачку на 1c: Дана строка, найти найбольше количество цифр, идущих в нем...

дана символьная строка. Посчитать в ней наибольшиее количество идущих подряд:пробелов
дана символьная строка. Посчитать в ней наибольшиее количество идущих подряд:пробелов;цифр


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru