Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 24

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

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

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

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

Код, написанный мною:
Code
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
#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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2019, 16:25
Ответы с готовыми решениями:

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

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

Указатель на функцию с аргументами, как аргумент другой функции
У меня есть некая функция, которая принимает как аргумент другую функцию typedef void(*func_type)(); start(func_type...

3
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
12.08.2019, 17:29
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
Сообщений: 24
12.08.2019, 18:20  [ТС]
Извините, но ваш код сложен для моего понимания. Я еще новичок
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.08.2019, 19:05
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.08.2019, 19:05
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru