0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 61
1

Remove_copy_if и generate_n

23.11.2015, 17:09. Показов 343. Ответов 0
Метки нет (Все метки)

Есть ряд y=shx=x+X^3/3!+x^5/5!+...+x^(2*n+1)/(2*n+1)!
Использовать generate_n на основе членов ряда последовательность в списке. У меня почему-то список заполняеться нулями.
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
int factorial(int n)
{
    return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
}
class Comp2
{
private:
    double x;
    int n;
public:
    Comp2(double x1, int n1)
    {
        x = x1, n = n1;
    }
    double operator()()
    {
        int c = (2 * n + 1);
        double m=(pow(-1, n)*pow(x, 2 * n + 1)) / factorial(c);
        n++;
        return m;
        
        
        
    
    }
};
void main()
{
list<int> v4;
generate_n(back_inserter(l5),10, Comp2(0.5, 3));
Также подскажите, нужно удалить из списка целых чисел элементы кратны данному и имеют больше двух цифр.
Используя remove_copy_if когда я использую такой функтор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Comp1
{
private:
    int a;
public:
    Comp1(int a1)
    {
        a = a1;
    }
    bool operator()(int num)
    {
        if ((num%a == 0) && (num > 99) && (num < -99))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
};
список не изменяеться. Если же задать одно условие всё работает. В чём проблема?

Добавлено через 13 минут
C++
1
2
list<int> v4;
generate_n(back_inserter(l5),10, Comp2(0.5, 3));
Ошибся когда копировал, ошибка не в этом)

Добавлено через 14 часов 47 минут
Еще актуально

Добавлено через 57 минут
Проблему с remove_copy_if решил. ПОдскажите пжлуйста с generate.

Добавлено через 23 часа 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class fun5
{
private:
    int k = -1;
    double x;
    double res = 0.0;
    
public:
 
    fun5(double x1)
    {
        x = x1;
    }
     double operator()()
    {
        k++;
    double i = pow(x, 2.0*k + 1);
        double j = factorial(3 * k + 1);
        return i / j;
        
    }
};
если x=2, к примеру, то выходит ряд 2 0 0 0, потому что второе число(например) почему то приводиться к int и выходит 0, как я понимаю. Как это исправить? Вроде как всё double уже.

Добавлено через 4 минуты
проблема решена
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2015, 17:09
Ответы с готовыми решениями:

Remove_copy_if
Требуется реализовать свой аналог шаблонной функции remove_copy_if. Из последовательности нужно...

Работа функции remove_copy_if ()
вот такая функция проверки является ли выражение в строке палиндромом bool IfPolyndrom (string ...

алгоритм std::remove_copy_if()
Всем привет! В документации сказано, что исходный и целевой диапазоны не должны пересекаться....

Что не так с реализацией алгоритма generate_n для контейнера вектор?
реализация в main: generate_n(back_inserter(sp), size, Generator()); for ( Iter1 = sp1.begin(...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru