Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2020, 15:22   #1
Александр222
Пользователь
 
Регистрация: 15.04.2020
Сообщений: 59
Вопрос C++. Алгоритм search_end_if

Я написал алгоритм, используется функтор. Например, есть условие, которое заключается в том, что элементы последовательности должны быть больше нуля.
Но такая реализация не работает. Сейчас выводится Not found. А должно быть Found on 1. Почему так? Пробовал разные условия, например i%2=1 (с другой последовательностью). Так вот, результат получается верный (Found on 1), но по факту числа последовательности i%2=0.

Код:
template<class ForwardIterator1, class ForwardIterator2, class Predicate>
ForwardIterator1 search_end_if(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, Predicate Functor){
 
    ForwardIterator1 ret = last1;
 
    for (; first1 != last1; ++first1) {
        ForwardIterator1 it1 = first1;
        ForwardIterator2 it2 = first2;
 
        while (*it1 == *it2) {
            ++it1;
            ++it2;
            if (Functor(*last2)) {
                ret = first1;
                break;
            }
            if (Functor(*last1)) return ret;
        }
    }
    return ret;
}
 
class Odd {
public:
    bool operator()(int i) {
        return i > 0;
    }
};
 
 
int main() {
    int* n;
    int x[3] = { 41, 1, 2 };
    int y[2] = { 1, 2 };
 
    search_end_if(x, x + 3, y, y + 2, Odd());
    Odd f;
    n = search_end_if(x, x + 3, y, y + 2, f);
   
    if (n == x + 3) std::cout << "\nNot found" << std::endl;
    else std::cout << "\nFound on position number " << (n - x) << std::endl;
 
    return 0;
}
Александр222 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Эндрью (Улучшенный алгоритм Грэхема) tszavyalova Помощь студентам 0 20.01.2014 21:49
Разветвляющийся алгоритм,циклический алгоритм и Многомерные массивы (Pascal) TrapperPTZ Помощь студентам 1 26.01.2012 08:58
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм. iamhated Помощь студентам 1 15.01.2012 16:24
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм iamhated Помощь студентам 1 14.01.2012 16:22
Алгоритм TMDS (Алгоритм передачи данных интерфейса DVI) Pro4RE Помощь студентам 2 24.04.2011 21:55