Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/78: Рейтинг темы: голосов - 78, средняя оценка - 4.92
 Аватар для Seroga7
6 / 6 / 2
Регистрация: 08.12.2012
Сообщений: 147

Количество подстрок в строке

09.03.2013, 20:53. Показов 15007. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно что-бы пользователь ввел 2 строки и ему вывело сообщение о том, сколько раз встречается строка 2 в первой строке. Как это сделать без классов, так как мы пока их не учили, а задание таковое есть..?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2013, 20:53
Ответы с готовыми решениями:

Посчитать количество таких подстрок, для которых среднее количество гласных больше среднего значения для всей строке
Необходимо реализовать следующую программу: строку мысленно разбивают на последовательности по 5 символов, далее необходимо посчитать...

Написать функцию, находящую в заданной строке количество подстрок, состоящих из цифр
Помагите пожалуйста! задание по программир. Напишите функцию Int kol(char*s) которая находит в заданной строке количество подстрок,...

Строки. Подсчитайте количество подстрок в строке. Определите длину самого короткого слова.
Дана строка слов, разделенных пробелами и запятыми. Подсчитайте количество подстрок (заключенных между запятыми) в строке. Определите длину...

7
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.03.2013, 22:40
Наличие подстроки в строкеhttp://www.cplusplus.com/reference/cstring/strstr/
0
 Аватар для egor2116
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
09.03.2013, 22:52
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
 
 
    string src,sub;
    src="aaa sss ddd aaa aaa";
    sub="aaa";
 
    int start = 0;
       int count = 0;
       int pos = 0;
       for(;;){
           pos = src.find(sub.c_str(),start);
           if (pos != -1){
               start = pos + sub.size();
               count++;
           } else {
               break;
           }
       }
               cout<<"Найдено совпадений "<<count<<endl;
  return 0;
}
0
 Аватар для Seroga7
6 / 6 / 2
Регистрация: 08.12.2012
Сообщений: 147
09.03.2013, 23:02  [ТС]
Спасибо, но я уже и сам написал функцию))

Вот такая вот она:

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
int str_in_str(char *str_long, char* str_short, int size_long, int size_short){
 
    int i,
        j,
        start,
        number=0,
        main_number=0;
 
    for (i = 0; i < size_long; ++i){
        if (str_long[i] == str_short[0]) {
            start = i;
            for (j = 0; j < size_short; ++j) {
                if (str_short[j] == str_long[start]) {
                    number++;
                    start++;
                }
            }
            if (number == size_short) {
                main_number++;
                number = 0;
            }
        }
    }
    return main_number;
}
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
10.03.2013, 08:02
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
 
size_t strstr_count(const char * str, const char * find){
    size_t count=0;
    const char * p=strstr(str,find);
    while(p){
        ++count;
        p=strstr(++p,find);
    }
    return count;
}
 
 
int main(){
    const char * str="MyMyMy";
    std::cout<<strstr_count(str,"My")<<std::endl;
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
10.03.2013, 10:03
У меня такое впечатление, что тс просто нужен был алгоритм, без использования библиотечных вызовов. А не только "без классов". Вот тут можно ознакомиться с алгоритмами.
0
0 / 0 / 0
Регистрация: 16.03.2021
Сообщений: 2
16.03.2021, 11:56
Столько лет прошло, а никто и не написал что в алгоритме автора ошибка.
Там при отсутствии совпадения требуется обнулять счетчик
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
int str_in_str(char *str_long, char* str_short, int size_long, int size_short){
 
    int i,
        j,
        start,
        number=0,
        main_number=0;
 
    for (i = 0; i < size_long; ++i){
        if (str_long[i] == str_short[0]) {
            start = i;
            for (j = 0; j < size_short; ++j) {
                if (str_short[j] == str_long[start]) {
                    number++;
                    start++;
                }
                  else
                {number = 0; start = 0;}
            }
            if (number == size_short) {
                main_number++;
                number = 0;
            }
        }
    }
    return main_number;
}
Добавлено через 7 минут
Игнорируйте это сообщение, коментатор неправ и раскаивается
0
0 / 0 / 0
Регистрация: 16.03.2021
Сообщений: 2
17.03.2021, 02:02
Таки ошибка присутствует, но я немного не то исправил, там счетчик number не обнуляется, при варианте, что в длинной строке есть только начало короткой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2021, 02:02
Помогаю со студенческими работами здесь

Написать программу, которая находила бы, в заданной строке, количество подстрок, состоящих из цифр
Помогите с задание по практике программирования. Написать программу, которая находила бы, в заданной строке, количество подстрок,...

Замена подстрок в строке
Кто знает, как в данной строке заменить все подстроки &quot;123&quot; на &quot;456&quot;?

Подсчитать количество подстрок в текстовом файле
Помогите написать программу которая может подсчитать сколько раз подстрока встречается в текстовом файле.

Найти количество вхождений подстрок в строку
Собственно, в input.txt лежит строка размером до 250 символов, в output.txt нужно найти количество вхождений в нее подстрок, а именно...

Найти количество подстрок четной длины, которые являются палиндромами
Четный палиндром Подстрокой строки называется любая непустая последовательность символов в строке. Палиндромом называется строка, которая...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru