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

Своя функция lastpos (поиск последнего вхождения подстроки в строку)

12.11.2014, 19:53. Показов 6452. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать функцию, которая выполняет действие функции LastPos(s,s1)поиск последнего вхождения под строки s1 в строку s. Но без использовании самой функции LastPos, помогиииите!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2014, 19:53
Ответы с готовыми решениями:

Поиск последнего вхождения подстроки s1 в строку s
#include <stdio.h> int count_of_substrings(string s, string s1){ int start = 0; int...

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

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

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

10
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
12.11.2014, 19:58 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* LastPos(char *str1,char *str2)
{
     int L1=strlen(str1);
     int L2=strlen(str2);
     for(int i=L1-L2;i>=0;i--)
     {
           int j=0;
           for(;j<L2;j++)
              if(str1[i+j]!=str2[j])
                         break;
          if(j==L2)
               return str1+i;
     }
     return 0;
}
1
2 / 2 / 0
Регистрация: 26.10.2014
Сообщений: 44
27.11.2014, 21:38  [ТС] 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
#include "stdafx.h"
#include "iostream"
#include <string>
using namespace std;
char lastposs(char*s,char *s1,char *s2)
{for(int k=0;k<50;k++)
   { for(int i=0;i<50;i++)
{if(s[k]==s1[i]) s2[i]=s1[i]; else break;};
};
return *s2;
};
int _tmain(int argc, _TCHAR* argv[])
{ setlocale(LC_ALL,"russian");
     char a[50];
     char b[50];
     char f[50];
     cout<<"введите строку: "<<endl;
    gets(a);
     cout<<"введите подстроку: "<<endl;
    gets(b);
    cout<<lastposs(a,b,f);
    system("pause");
 
    return 0;
}
0
2 / 2 / 0
Регистрация: 26.10.2014
Сообщений: 44
27.11.2014, 22:03  [ТС] 4
как строку пишу "qwerty"
как подстроку пишу "we"
выдает "werty"
почему то возвращает еще и все находящееся после подстроки....

Добавлено через 22 секунды
zss, как строку пишу "qwerty"
как подстроку пишу "we"
выдает "werty"
почему то возвращает еще и все находящееся после подстроки....
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
27.11.2014, 22:07 5
Функция возвращает указатель на адрес первого найденного символа.
А уж что с ним делать, Вам решать!
Можете, например, отнять адрес начала строки - получите номер этого символа:
C++
1
2
3
char str[]="test";
char*p= LastPos(str,"es");
int n=p-str;
1
Знаток
156 / 156 / 185
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
27.11.2014, 22:30 6
у тебя функция возвращает один символ типа char
1
Заблокирован
28.11.2014, 00:08 7
Функция должна вернуть int - номер позиции первого символа подстроки.

Добавлено через 2 минуты
Если вы проходите основную строку с головы - то будет возвращаться первое вхождение подстроки.
Т.е., основную строку нужно проходить с хвоста.
1
2 / 2 / 0
Регистрация: 26.10.2014
Сообщений: 44
30.11.2014, 00:09  [ТС] 8
IrineK, спасибо! я сделала рабочую функцию,но она возвращает номер позиции последнего символа подстроки... думаю,сойдет ли? или нужно переделать под первую позицию?
C++
1
2
3
4
5
6
7
8
9
10
11
int LastPos(char *str1,char *str2)
    {  int L1=strlen(str1);
       int L2=strlen(str2);
 
       for(int i=L1-L2;i>=0;i--)
       {   
           for(int j=0;j<L2;j++)
           {if(*(str1+i)==*(str2+j)){return i;}}
        }
     return -1;
     }
0
Заблокирован
30.11.2014, 05:09 9
Цитата Сообщение от miss-julia Посмотреть сообщение
ли нужно переделать под первую позицию?
Именно в возврате первой позиции последнего вхождения - функционал вашей функции.
1
2 / 2 / 0
Регистрация: 26.10.2014
Сообщений: 44
30.11.2014, 15:32  [ТС] 10
IrineK, а вы могли бы помочь переделать мою функцию, чтобы она выдавала не последнюю,а первую позицию? что то у меня никак не получается....
C++
1
2
3
4
5
6
7
8
9
10
11
int LastPos(char *str1,char *str2)
    {  int L1=strlen(str1);
       int L2=strlen(str2);
 
       for(int i=L1-L2;i>=0;i--)
       {   
           for(int j=0;j<L2;j++)
           {if(*(str1+i)==*(str2+j)){return i;}}
        }
     return -1;
     }
0
Заблокирован
30.11.2014, 15:42 11
zss в сообщениях 2 и 5 в этой теме уже решил задачу.
1
30.11.2014, 15:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2014, 15:42
Помогаю со студенческими работами здесь

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

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

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

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


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

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