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

Поиск последнего вхождения подстроки s1 в строку s

25.01.2011, 16:04. Показов 11606. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int count_of_substrings(string s, string s1){
        int start = 0;
        int count = 0;
        int pos = 0;
    for(i < 0; i < 4; i++){
        pos = s.find(s1.c_s(),start);
            if (pos != -1){
            start = pos + s1.size();
            count++;
            } else {
        break;
            }
    }
return count;
}
Помогите изменить код что бы он находил последнее вхождение подстроки в строку. Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2011, 16:04
Ответы с готовыми решениями:

Поиск последнего вхождения в строку заданной подстроки
8.8.1. Помогите, пожалуйста, решить задачу в С++. Написать программу поиска последнего вхождения в строку заданной подстроки.

Своя функция lastpos (поиск последнего вхождения подстроки в строку)
Написать функцию, которая выполняет действие функции LastPos(s,s1)поиск последнего вхождения под строки s1 в строку s. Но без использовании...

Reverse interator и поиск последнего вхождения символа в строку
Господа и дамы, я поставлен в тупик &quot;изобретательным&quot; способом работы со строками. Вот смоторите. есть URI...

5
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
25.01.2011, 16:34
Цитата Сообщение от fcrCullen93 Посмотреть сообщение
код
А Вы этот "код" компилировать пытались? И чем Вам собственно strstr() так не угодила?
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
#include <stdio.h>
#include <string.h>
 
char * strrstr(const char * s1, const char * s2){
    const char * p = s1 + strlen(s1) - strlen(s2) + 1;
    
    while ( p > s1 )
        if ( strstr(--p, s2) )
            return (char*)p;
            
    return NULL;
}
 
int main(void){
    char s1[BUFSIZ], s2[BUFSIZ], * p;
    
    printf("String: ");
    scanf("%[^\n]%*c", s1);
    printf("Substring: ");
    scanf("%[^\n]%*c", s2);
    
    printf("Last substring: %s\n", ( p = strrstr(s1, s2) ) ? p : "not found!");
    
    return 0;
}
1
1 / 1 / 0
Регистрация: 25.01.2011
Сообщений: 12
25.01.2011, 17:13  [ТС]
Извините но мне нельзя использовать библиотечную функцию, можете помочь сделать аналогичную функцию без strstr?
0
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
25.01.2011, 17:34
поиск подстроки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
char * GetSubStr(char *sub, char *str)
{
    char *pstr, *psubstr, *start;
    for (int i = 0; str[i]; ++i)
    {
 
        pstr = start = str + i;
        psubstr = sub;
 
        while(*psubstr && *psubstr == *pstr)
        {
            ++pstr;
            ++psubstr;
        }
 
        if (!*psubstr)
        {
            return start;
        }
    }
 
    return NULL;
}
1
1 / 1 / 0
Регистрация: 25.01.2011
Сообщений: 12
25.01.2011, 18:49  [ТС]
Еще один маленький вопрос, я тут поставила твой метод но тут у меня не совпадают с методом main. можете помочь?

Добавлено через 33 минуты
Цитата Сообщение от panicwassano Посмотреть сообщение
char * GetSubStr(char *sub, char *str)
{
char *pstr, *psubstr, *start;
for (int i = 0; str[i]; ++i)
{
pstr = start = str + i;
psubstr = sub;
while(*psubstr && *psubstr == *pstr)
{
++pstr;
++psubstr;
}
if (!*psubstr)
{
return start;
}
}
return NULL;
}
Можете на это main написать, я тот первый изменила но че то не выходит. Помогите пожалуйста!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
25.01.2011, 23:25
Цитата Сообщение от fcrCullen93 Посмотреть сообщение
Извините но мне нельзя использовать библиотечную функцию
Беда...
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
45
#include <stdio.h>
 
int mystrlen(const char * s){
    const char * p;
    for ( p = s; *p; ++p )
        ;
    return p - s;
}
 
char * mystrstr(const char * s1, const char * s2){
    const char * p1, * p2;
    
    while ( *s1 ){
        for ( p1 = s1, p2 = s2; *p2 && *p1 == *p2; ++p1, ++p2 )
            ;
        if ( ! *p2 )
            return (char*)s1;
        ++s1;
    }
    
    return NULL;
}
 
char * mystrrstr(const char * s1, const char * s2){
        const char * p = s1 + mystrlen(s1) - mystrlen(s2) + 1;
        
        while ( p > s1 )
                if ( mystrstr(--p, s2) )
                        return (char*)p;
                        
        return NULL;
}
 
int main(void){
        char s1[BUFSIZ], s2[BUFSIZ], * p;
        
        printf("String: ");
        scanf("%[^\n]%*c", s1);
        printf("Substring: ");
        scanf("%[^\n]%*c", s2);
        
        printf("Last substring: %s\n", ( p = mystrrstr(s1, s2) ) ? p : "not found!");
        
        return 0;
}
myprintf() / myscanf() точно не нужно делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2011, 23:25
Помогаю со студенческими работами здесь

Функция LastPos(s, s1): поиск последнего вхождения подстроки s1 в строку s
Нужно написать программу, которая будет выполнять поиск последнего вхождения подстроки s1 в строку s. Прошу пожалуйста помочь

Определение последнего вхождения подстроки в строку
Написать следующие функции в двух вариантах: с использованием индексов и указателей. В строке string1 определяет последнее вхождение в...

По позиции последнего вхождения заданной подстроки S в строку. По части строки, расположенной между первым вхо
Парни помогите,кто знает такое. Разработайте классы для решения предложенной задачи . При необходимости, дополните существующие классы...

Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr)
Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr).Помогите плииз

Алгоритм для нахождения последнего вхождения подстроки в строке
Ребята, устраиваюсь в крупную фирму, уже успешно прошел 2 технических собеседования, но просят ещё выполнить тестовое задание по...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
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 Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru