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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FrankyMO
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 90
#1

Поиск последнего вхождения в строку заданной подстроки - C++

17.01.2014, 00:28. Просмотров 597. Ответов 3
Метки нет (Все метки)

8.8.1.

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

Написать программу поиска последнего вхождения в строку заданной подстроки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2014, 00:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск последнего вхождения в строку заданной подстроки (C++):

Мне надо сделать поиск последнего вхождения подстроки s1 в строку s(с функцией LastPos, не strstr). В этом коде просто вхождение подстроки в строку. - C++
#include <stdio.h> int count_of_substrings(string s, string s1){ int start = 0; int count = 0; int pos = 0; ...

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

Поиск в заданной строке последнего вхождения заданного символа - C++
Помогите написать функцию, которая ищет в заданной строке последнее вхождение заданного символа (char *strrchr(const char *s1, int c)

Поиск вхождения подстроки - C++
int AString::find(char* podstr) { if (strstr(str, podstr) != NULL) return (int) (strstr(str, podstr) -str); else return -1; } ...

Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2 - C++
Помогите решить задачку пож. 1. Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2 2. Удалить первые вхождения...

Машина Тьюринга, определение вхождения подстроки в строку - C++
приветствую. собственно, задание по мт. вопрос не по части решения теоретического, а именно по реализации на c++. на вход мт поступает...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
17.01.2014, 12:12 #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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
int main(int argc, char* argv[])
{
    char str1[256] = "fruit apple apple big\0";
    char str2[256] = "apple\0";
 
    double d = 0.00; int r = strlen(str1)-1;
    while (r >= 0 && d < 1.00)
    {
        int i = 0, n = r--; d = 0.00;
        while (str1[n] != '\0' && str2[i] != '\0')
            d+=(str2[i++] == str1[n++]) ? (double)1/strlen(str2) : 0;
    }
 
    printf("%s\n%s (position = %d)\n", str1,str2,r+1);
 
    _getch();
 
    return 0;
}
http://codepad.org/8XwcGPpz
Миниатюры
Поиск последнего вхождения в строку заданной подстроки  
MicM
822 / 489 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
17.01.2014, 12:19 #3
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
#include <iostream>
#include <cstring>
using std::cout;
using std::cin;
 
int main()
{
    const int maxLength = 128;
    char str[maxLength],substr[maxLength];
    cout <<"String: ";
    cin.getline(str,maxLength);
    cout <<"Substring: ";
    cin.getline(substr,maxLength);
    int i = strlen(str) - 1;
    int substrLength = strlen(substr);
    bool flag;
    int j,position = -1,tmpIndex;
    while (i>substrLength)
    {
        flag = true;
        j = 1;
        tmpIndex = i;
        while (j!=substrLength && flag)
        {
            if (substr[substrLength-j]!=str[i])
                flag = false;
            else
            {
                j++;
                i--;
            }
        }
        if (flag)
        {
            position = i;
            break;
        }
        else i = --tmpIndex;
    }
    if (position==-1)
        std::cout <<"Substring not found!\n";
    else std::cout <<"Substring is found: " <<position <<std::endl;
    return 0;
}
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,071
Записей в блоге: 5
Завершенные тесты: 1
17.01.2014, 12:40 #4
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
int main()
{
    system("chcp 1251>0");
    std::string str = "Не много лет тому назад Не много лет тому назад", substr = "лет";
    std::string::reverse_iterator iter = std::search(str.rbegin(), str.rend(), substr.rbegin(), substr.rend());
    std::cout << "Последнее вхождение в позиции:" << iter - str.rbegin() + substr.size() << std::endl;
    /*Либо str.rend() - iter - substr.size() если с начала строки */
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2014, 12:40
Привет! Вот еще темы с ответами:

Как узнать индекс вхождения подстроки в строку? - C++
Как задать шаблон строки? Объясню на примере: мне надо узнать индекс подстроки в строке, используя, например, String::IndexOf(String)....

Найти координаты первого вхождения в заданную строку подстроки, состоящей из двух одинаковых заданных символов - C++
Найти координаты первого вхождения в заданную строку подстроки, состоящей из двух одинаковых заданных символов. Помогииииите

Найти индекс последнего вхождения символа, введённого пользователем, в заданную строку - C++
Уважаемые форумчане. Помогите, пожалуйста, написать программу по следующему условию: пользователь вводит отдельно строку и символ,...

Вставка подстроки в строку с заданной позиции - C++
Помогите, пожалуйста, расписать функцию insert (); #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.01.2014, 12:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru