Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
borovik
209 / 203 / 1
Регистрация: 25.07.2010
Сообщений: 1,151
#1

STL find_end (непонятно Оо) - C++

19.12.2010, 20:07. Просмотров 824. Ответов 10
Метки нет (Все метки)

чтото сильно ругается... что не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string s,d,*n;
    cin>>s;
    cin>>d;
    n = find_end(s.begin(),s.end(),d.begin(),d.end());
    cout<<n;
}
Добавлено через 14 минут
да видно сложна программка ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 20:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос STL find_end (непонятно Оо) (C++):

Алгоритм std::find_end - аналог std::search_n - C++
Есть два семейства стандартных алгоритмов: std::search и std::find_end. Первое семейство предназначено для поиска первого совпадения...

Непонятно - C++
Есть простая програмка, решающая логические уравнения. Все решает замечательно, но при вводе короткого уравнения a|b по непонятной причине...

Непонятно в С++ - C++
Для книг, хранящихся в библиотеке, задаются: регистрационный номер книги, автор, название, год издания, издательство, количество страниц....

wxDev-C++ непонятно - C++
Я скачал себе wxDev-C++, мне очень очень понравилась эта IDE. Вопросов правда несколько. Я раньше учился писать в консольных приложениях и...

непонятно со строкой - C++
что нужно ввести чтобы программа читала всю строку, помогите пожалуйста. Он у меня читает только до первого пробела. Спасибо заранее

Непонятно условие - C++
Здравствуйте, уважаемые форумчане! По заданию написано: &quot;инкапсулировать поля класса в независимой структуре и в ней реализовать методы...

10
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
19.12.2010, 20:26 #2
Приведите ошибки.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.12.2010, 20:27 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        string s,d;
        cin>>s;
        cin>>d;
        string::iterator it = find_end(s.begin(),s.end(),d.begin(),d.end());
        if(it != s.end())
            cout<<*it<<'\n';
        return 0;
}
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
19.12.2010, 20:29 #4
C++
1
2
3
4
5
6
        string s,d;
        string::iterator n;
        cin>>s;
        cin>>d;
        n = find_end(s.begin(),s.end(),d.begin(),d.end());
        cout<<*n;
1
borovik
209 / 203 / 1
Регистрация: 25.07.2010
Сообщений: 1,151
19.12.2010, 20:35  [ТС] #5
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        string s,d;
        cin>>s;
        cin>>d;
        string::iterator it = find_end(s.begin(),s.end(),d.begin(),d.end());
        if(it != s.end())
            cout<<*it<<'\n';
        return 0;
}
выводит бред или ошибку
http://www.imageup.ru/img196/bezymyannyjj514290.png
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.12.2010, 20:38 #6
borovik, На этот код не может выводить. Ибо предусмотрена проверка на то, что поиск точно прошел.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        string s,d;
        cin>>s;
        cin>>d;
        string::iterator it = find_end(s.begin(),s.end(),d.begin(),d.end());
        if(it != s.end())
            cout<<*it;
        else
            cout<<"Not finded\n";
        return 0;
}
1
borovik
209 / 203 / 1
Регистрация: 25.07.2010
Сообщений: 1,151
19.12.2010, 20:39  [ТС] #7
Цитата Сообщение от ForEveR Посмотреть сообщение
borovik, На этот код не может выводить. Ибо предусмотрена проверка на то, что поиск точно прошел.
разве не должно возвращать кол-во вхождений подстроки в строке?
http://www.imageup.ru/img196/bezymyannyjj2514306.png
если нет, то как сделать?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.12.2010, 20:47 #8
borovik, Ну уж не find_end явно)
А по скрину - как раз find_end
1
borovik
209 / 203 / 1
Регистрация: 25.07.2010
Сообщений: 1,151
19.12.2010, 20:56  [ТС] #9
А как вывести номер элемента как в примере

int a[10] = {3, 2, 5, 7, 5, 8, 7, 5, 8, 5},
b[2] = {5, 8}, *p2;
p2 = find_end(a, a+10, b, b+2);
cout « p2 - a « endl;
return 0; }
Вывод этой программы:
7

а[7] (=5) является начальным элементом последней пол*ной последовательности 5,8 (заданной массивом Ь), которая встречается в а.

Добавлено через 3 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
borovik, Ну уж не find_end явно)
А по скрину - как раз find_end
//А типо если вставить a++?
как я понял если нашёл то сразу выходит... то а++ не выйдет
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.12.2010, 21:04 #10
Так что-ли?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        string s,d;
        cin>>s;
        cin>>d;
        string::iterator it = find_end(s.begin(),s.end(),d.begin(),d.end());
        if(it != s.end())
        {
            cout<<*it<<'\n';
            cout<<std::distance(s.begin(), it)<<'\n';
         }
         else
            cout<<"Not finded\n";
         return 0;
}
1
borovik
209 / 203 / 1
Регистрация: 25.07.2010
Сообщений: 1,151
19.12.2010, 22:54  [ТС] #11
спс добрый человек )

Добавлено через 1 час 42 минуты
чтото я запутался в синтаксисе помогите
заюзать mismatch, элементы не равны если различие более чем на Х.
пс. возможно организовать без pair?
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
class mycl{
    public:
        int x;
        bool operator()(int z, int c){
            return !(z-c)<x;
        }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    mycl cl;
    string a,s;
    string::iterator it;
    pair<string*,string*>difpos(0,0);
    cin>>cl.x;
    cin>>a;
    cin>>s;
    difpos = mismatch(a,a.length(),s,cl);
            it = difpos.first;
    if (!a.end())
         cout<<"не совпадает на более чем Х"<<*it;
        else {
             cout<<"все элементы совпадают по правилу Х!";
         }
}
0
19.12.2010, 22:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2010, 22:54
Привет! Вот еще темы с ответами:

Домашка по C++,непонятно! - C++
Ребята Салют,из-за работы всё проворонил и не знаю как обращятся этим C++ а задали мне на вопросы ответить если отвечю оценка будет а дали...

Непонятно выполняется оператор if - C++
Собственно вопрос очень глупый, наткнулся на такой код в теме: int main() { setlocale(LC_ALL, &quot;Russian&quot;); int n; ...

Объявление функции (непонятно) - C++
Не могу понять, чем отличаются объявления функции в 1 и 2 вариантах? Смысл писать в 1 ванианте отдельно прототип функции(первую строчку:...

typedef непонятно чего - C++
Есть вот такой код typedef private void (T::*TimedFunction)(void); По сути это должна быть ссылка на функцию класса Т с возвращаемым...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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