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

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

Войти
Регистрация
Восстановить пароль
 
gulllak
45 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 66
#1

Указатель на функцию - C++

27.06.2013, 21:15. Просмотров 293. Ответов 4
Метки нет (Все метки)

Вот задание:
Создать двумерный массив N*M и найти в нем максимальный и минимальный элемент и их индексы. Необходимо возвращать указатель на функцию.

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

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
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
 
using namespace std;
 
int main() 
{
    setlocale(0,"rus");
    int i,j,n,m;
    int max,imax,jmax;
    int min,imin,jmin;
 
    cout<<"Матрица‚ [n x m]"<<endl;
    cout<<"Введите n:"<<endl;
    cin>>n;
    cout<<"Введите m:"<<endl;
    cin>>m;
    int **mas=new int*[n];
    for (i=0;i<n;i++)
        mas[i]=new int[m];
    //Ввод данных
    cout<<"Введите данные в массив"<<endl;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            cin>>mas[i][j];
        }
    //Вывод массива
    cout<<"Наш массив:"<<endl;
    cout<<endl;
    for (i=0; i<n; i++)
    {
        for(j=0 ; j<m ; j++)
        {
        cout<<mas[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    //Макс и мин эл-т
    max=mas[0][0];
    min=mas[0][0];
    for(i=0 ; i<n ; i++)
    {
        for(j=0 ; j<m ; j++)
        {
            if(mas[i][j] >= max)
            {
                max=mas[i][j];
                imax=i;
                jmax=j;
            }
            if(mas[i][j] <= min)
            {
                min=mas[i][j];
                imin=i;
                jmin=j;
            }
        }
    }
    cout<<"Максимальный элемент"<<max<<" и его индекс "<<"["<<imax+1<<"]"<<"["<<jmax+1<<"]"<<endl;;
    cout<<"Минимальный элемент"<<min<<" и его индекс "<<"["<<imin+1<<"]"<<"["<<jmin+1<<"]"<<endl;
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2013, 21:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на функцию (C++):

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

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель - C++
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); private: void echo_f (){}; ...

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

Передача умного указателя в функцию принимающую указатель на указатель - C++
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Передать в неуправляемую функцию указатель на указатель - C++
Неуправляемая функция типа FUNC(int ** r); Делаю так fixed (int* ptr = arr) { FUNC((int **)ptr); ...

Указатель на функцию возвращающую указатель - C++
Всем привет. Подскажите, пожалуйста, пример не очень сложной программы, в которой встречается указатель на функцию, принимающую параметр...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
27.06.2013, 21:42 #2
Необходимо возвращать указатель на функцию.
откуда такая необходимость?
откуда его возвращать? куда возвращать?
указатель на какую функцию, что она должна делать?
0
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
27.06.2013, 21:56 #3
@gulllak, Возвращат указатель на функцию? А зачем и куда его возвращать?

Думаю вам нужно так:
Выносите нахождение макс и мин элемента в функции, допустим

C++
1
2
int max(int **array);
int min(int **array);
дальше делаете массив указателей на функцию

C++
1
int (*func[2])(int **array);
C++
1
2
func[0] = max;
func[1] = min;
и в программе как-то так:

C++
1
2
3
4
for (int i = 0;  i < 2; i++)
{
    cout << func[i] << endl;
}
Добавлено через 10 минут
Ой - что-то меня понесло. Вызывать вот так нужно будет:

C++
1
2
3
4
for (int i = 0;  i < 2; i++)
{
    cout << func[i](mas) << endl;
}
1
gulllak
45 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 66
27.06.2013, 22:31  [ТС] #4
Нужно поиск макс. и мин. поместить в функцию и возвращать указатель на функцию. Вот такое вот задание. Так то понял, но вот осталось понять как возвращать указатель на функцию.
0
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
27.06.2013, 22:51 #5
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
#include <iostream>
 
using namespace std;
 
void my_func_0 ()
{
    cout<<"1"<<endl;
}
 
void my_func_1 ()
{
    cout<<"2"<<endl;
}
void * main_func (const bool t)
{
    if (t) return reinterpret_cast<void *>(my_func_1);
    else return reinterpret_cast<void *>(my_func_0);
}
 
int main() {
 
    (reinterpret_cast<void (*)()>(main_func(1)))();
    (reinterpret_cast<void (*)()>(main_func(0)))();
 
    cin.get();
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2013, 22:51
Привет! Вот еще темы с ответами:

Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) - C++
Подскажите как передать указатель на файл в функцию, как вернуть указатель на файл из функции. void Open() // из этой функции вернуть...

Как передать параметр типа "указатель на указатель" в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; #include &lt;iomanip&gt; using std::setiosflags; ...

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? - C++
Собсно. То есть ребята, вот пример отсюда: http://www.cplusplus.com/reference/algorithm/count_if/ // count_if example #include...

Передача массива в функцию используя указатель на функцию - C++
У меня имеется готовая программа без передачи функции в функцию указателем, мне нужно передать функцию ввода масива в функцию его обработки...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.06.2013, 22:51
Ответ Создать тему
Опции темы

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