Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
1

Функция аргументами которой являются указатель на функцию и массив числовых значений

12.08.2019, 16:25. Показов 1447. Ответов 3

Задача: Написать программу с функцией, аргументами которой передаются: указатель на функцию и массив числовых значений . При вызове функции к каждому из элементов массива применяется функция, переданная первым аргументом (через указатель). Предусмотреть перегрузку функции таким образом, чтобы первым аргументом (вместо указателя на функции) можно было передавать число (в таком случае все элементы массива-аргумента умножаются на данное число).

Я написал что-то вроде как подходящее под поставленные условия, но оно не работает(при запуске просто ничего не происходит). Если я был на правильном пути, скажите, что надо исправить. Если я вообще не то сделал, то тогда напишите пожалуйста то, что требуется в задаче.
Спасибо

Код, написанный мною:
Код
#include<iostream>
#include<cstdlib>

using namespace std;

int A(int (*F)(int),int i)
{
    int* nums=new int[i];
    for(int k=0;k<i;k++)
    {
        nums[i]=rand()%14;
    }
    return (*F)*nums;
}

int B(int n)
{
    return n;
}

int main()
{
    setlocale(LC_ALL,"Rus");
    srand(0);
    int i,k;
    cout<<"Размер массива: ";
    cin>>i;
    int* f;
    f=A((*B),i);
    for(k=0;k<i;k++)
    {
        cout<<f[i]<<"|";
    }
    cout<<endl;
    delete [] f;
    return 0;
}
[/CPP]
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2019, 16:25
Ответы с готовыми решениями:

Определите функцию, аргументами которой являются три числа и которая возвращает значение True если первое число принадлежит интервалу
Определите функцию, аргументами которой являются три числа и которая возвращает значение True если...

Указатель на функцию с аргументами по умолчанию
Можно ли вообще определить и записать подобное чудо?

Указатель на функцию с аргументами, как аргумент другой функции
У меня есть некая функция, которая принимает как аргумент другую функцию typedef...

Функция сортировки массива, в качестве параметра которой передается указатель на массив целых чисел
создать функцию, в качестве параметра которой передается указатель на массив целых чисел. Функция...

3
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,043
12.08.2019, 17:29 2
D303, привет!
Цитата Сообщение от D303 Посмотреть сообщение
Написать программу с функцией, аргументами которой передаются: указатель на функцию и массив числовых значений . При вызове функции к каждому из элементов массива применяется функция, переданная первым аргументом (через указатель). Предусмотреть перегрузку функции таким образом, чтобы первым аргументом (вместо указателя на функции) можно было передавать число (в таком случае все элементы массива-аргумента умножаются на данное число).
using std::functional<T> = указатель на функцию
using std::vector<T> = массив числовых значений
Кликните здесь для просмотра всего текста

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
45
46
47
48
49
50
51
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
 
template<typename InIt>
void A(const std::function<int(int)>& f, const InIt& it, const InIt& it_end);
 
template<typename InIt>
void A(int value, const InIt& it, const InIt& it_end);
 
template<typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<T>& box);
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    std::vector<int> box{ 10, 30, 50, 120, -30, 45 };
    auto func = [](auto value) { return value + 10; };
    A(func, std::begin(box), std::end(box));
    std::cout << box;
    A(10, std::begin(box), std::end(box));
    std::cout << box;
 
    return 0;
}
 
template<typename InIt>
void A(const std::function<int(int)>& f, const InIt& it, const InIt& it_end)
{
    std::transform(it, it_end, it, f);
}
 
template<typename InIt>
void A(int value, const InIt& it, const InIt& it_end)
{
    auto action = [value](auto value_now) { return value_now * value; };
    std::transform(it, it_end, it, action);
}
 
template<typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<T>& box)
{
    for (auto value : box)
    {
        os << value << " ";
    }
    os << "\n";
    return os;
}
0
Миниатюры
Функция аргументами которой являются указатель на функцию и массив числовых значений  
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
12.08.2019, 18:20  [ТС] 3
Извините, но ваш код сложен для моего понимания. Я еще новичок
0
nd2
3415 / 2795 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
12.08.2019, 19:05 4
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
45
46
47
48
49
50
void A(void (*F)(int&), int arr[], int N)
{
    for (int i = 0; i < N; ++i)
        F(arr[i]);
}
 
void A(int n, int arr[], int N)
{
    for (int i = 0; i < N; ++i)
        arr[i] *= n;
}
 
void f(int& a)
{
    a += 3;
}
 
void show(int arr[], int N)
{
    for (int i = 0; i < N; ++i)
        cout << arr[i] << ' ';
    cout << endl << endl;
}
 
 
int main()
{
    setlocale(LC_ALL,"Rus");
    srand(time(0));
    
    const int N = 5;;
    
    int arr[N];
    for(int k=0; k<N; k++)
    {
        arr[k] = rand() % 14;
    }
 
    show(arr, N);
    
    A(f, arr, N);
    show(arr, N);
    
    int n = 4;
    A(n, arr, N);
    show(arr, N);
    
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2019, 19:05

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая...

Напишите функцию Swap(a, b), аргументами которой могут быть числа любого типа
Напишите функцию Swap(a, b), аргументами которой могут быть числа любого типа. Функция меняет...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая...

Функция извлечения числовых значений
Привет! Не могу понять как красиво написать алгоритм извлечения числовых значений со строки ,в...


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

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

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