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

Дана строка

14.11.2013, 15:59. Показов 1224. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Задача: Дана строка. Определить, сколько раз входит в нее группа букв abc.

Вот мое решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
    setlocale(0,"");
 
    int i;
    int count = 0;
    char str[256];
 
    cout << "Введите строку: " << endl;
    gets_s(str);
 
    for (i = 0; i < strlen(str); i++ )
    {
        if ((str[i] == 'a') && (str[i+1] == 'b') && (str[i+2] == 'c'))
        count++;
    }
 
    cout << "В строке группа букв abc встречается " << count << " раз(а) " << endl;
 
    system("pause");
    return 0;
}
Вопрос: Как можно улучшить программу ? Накидайте ваши варианты поиска группы букв abc

Заранее спасибо!)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2013, 15:59
Ответы с готовыми решениями:

Дана строка. Подсчитать сколько раз первая строка входит во вторую
Дана строка. Подсчитать сколько раз первая строка входит во вторую. Например: вводим &quot;при&quot; (строка...

Дана строка символов. Проверьте,является ли данная строка палиндромом
Парни нужна помощь,нужен код решения этой задачи на языке с++. Дана строка символов....

дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры.
Будьте добры,помогите с решением задачи: дана строка, изображающая целое положительное число....

Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка...

8
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
14.11.2013, 16:10 2
разве что, если нашли три символа - 'i' увеличить еще на 2 вручную чтобы не проходить по уже найденному слову abc

Добавлено через 1 минуту
Цитата Сообщение от MEOWPOWER Посмотреть сообщение
for (i = 0; i < strlen(str); i++ )
тут может вылететь на
Цитата Сообщение от MEOWPOWER Посмотреть сообщение
(str[i+1] == 'b') && (str[i+2] == 'c')
конечное значение i надо уменьшить на 2 (ну или на 1 за счет того что нулем кончается строка)
1
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
14.11.2013, 16:16 3
MEOWPOWER, как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string str;
    int num = 0;
    size_t last = 0;
    std::cout << "input your string" << std::endl;
    std::getline(std::cin, str);
    while (std::string::npos != (last = str.find("abc", last)))
    {
        ++num;
        last += 3;
    }
    std::cout << "the substring \"abc\" is present in your string " << num <<  "times" << std::endl;
    std::system("pause");
    return 0;
}
Добавлено через 52 секунды
Цитата Сообщение от MEOWPOWER Посмотреть сообщение
for (i = 0; i < strlen(str); i++ )
* * {
* * * * if ((str[i] == 'a') && (str[i+1] == 'b') && (str[i+2] == 'c'))
* * * * count++;
* * }
Вылезли за пределы строки.
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 4
14.11.2013, 16:27  [ТС] 4
Все понял!
Спасибо большое! )
0
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,506
Записей в блоге: 6
14.11.2013, 16:53 5
Вот вам шаблон из STL
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
  template<typename _InputIterator, typename _ForwardIterator>
    _InputIterator
    find_first_of(_InputIterator __first1, _InputIterator __last1,
          _ForwardIterator __first2, _ForwardIterator __last2)
    {
      for ( ; __first1 != __last1; ++__first1)
    for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
      if (*__first1 == *__iter)
        return __first1;
      return __last1;
    }

Библиотека написанна профессионалами. Думаю стоит принять во внимание их код. Дерзайте.
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
14.11.2013, 17:04 6
Ilot, не, ну классно, но я лично не понял к чему это)
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
14.11.2013, 17:23 7
Цитата Сообщение от metaluga145 Посмотреть сообщение
но я лично не понял к чему это)
Цитата Сообщение от Ilot Посмотреть сообщение
; ++__first1)
вот кстати еще как можно ускорить алгоритм)
1
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
14.11.2013, 17:40 8
Raali, та фраза была к тому, что можно ускорить алгоритм или что? может тогда вообще заново std писать?
0
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,506
Записей в блоге: 6
15.11.2013, 09:31 9
metaluga145, товарищ Raali хотел сказать, что префиксный инкремент для итераторов
выполняется быстрее постфиксного.
Цитата Сообщение от metaluga145 Посмотреть сообщение
может тогда вообще заново std писать?
Заново - нет, а вот пользоваться реализациями алгоритмов из STL очень даже полезно. В идеале их нужно знать все так как зачастую это одни из самых оптимальных алгоритмов (но не без исключений).
Мне вот интересно если на собеседовании или в тестовом задании попросят написать программу, но без использования STL и если реализовать тот же алгоритм "своими руками" как к этому отнесутся работодатели?
Цитата Сообщение от metaluga145 Посмотреть сообщение
Ilot, не, ну классно, но я лично не понял к чему это)
И правильно не поняли. Я немного тупанул не тот алгоритм привел. Смотреть в сторону find_fist_of
0
15.11.2013, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2013, 09:31
Помогаю со студенческими работами здесь

Дана строка символов...
Помогите пожалуйста решить задачку на C++ Дана строка символов. Заменить в строке сочетание...

Дана строка из 32 символов
Дана строка из 32 символов, содержащая только символы '0' и '1'. 1)Строка представляет целое...

Дана строка символов
Помогите написать лабу. Дана строка символов. Распечатать слова, отличные от последнего, оставив...

Дана строка символов
Дана строка символов введенных с клавиатуры. Определить является ли введенный символ целым числом....


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

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