Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите с использованием указателя на функцию

24K
28 марта 2007 года
Annechka
6 / / 28.03.2007
Здравствуйте, я изучаю язык программирования Borland Builder C++ версии 6
Мне дали лабораторную в университете, но у меня не получается её сделать... :( :confused:
Задание звучит так:
Необходимо написать программу в консольном приложении в которой имеется 2 функции с параметрами которые возвращают значения, и ещё одна которая
использует указатель на функцию. (Функции можно взять любые)
Помогите мне пожалуйста, я очень буду благодарна вам...
P.S// C уважением Анна:)
320
28 марта 2007 года
m_Valery
1.0K / / 08.01.2007
Так какие функции то ? В чем проблема ? Указатель на ф-ию можно использовать ,например, в qsort - ф-ии быстрой сортировки
Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int compare(const void* arg1,const void* arg2);
//указатель на функцию
int (*pd)(const void*,const void*) = compare;
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(0));
    const int size = 10;
    int* array=new int[size];
    for(int i = 0;i<size;++i)
        array = rand() % 1000;
    cout<<"\tArray"<<endl;
    for(int i = 0;i<size;++i)
        cout<<array<<' ';
    cout<<endl;
    cout<<"\tArray after sorting"<<endl;
    // указатель передается в ф-ию быстрой сортировки
            qsort(array,size,sizeof(int),pd);
    for(int i = 0;i<size;++i)
        cout<<array<<' ';
    cout<<endl;
    delete[] array;
    return 0;
}
int compare(const void* arg1,const void* arg2)
{
 return*(int*)arg1-*(int*)arg2;
}

Лучше конкретней спрашивай,что не получается в конкретных функциях.
9
28 марта 2007 года
Lerkin
3.0K / / 25.03.2003
2m_Valery: Вопрос про реализацию в Borland C++ Builder.
 
Код:
#include "stdafx.h"
...
int _tmain(int argc, _TCHAR* argv[])
...

Думается, это будет студентке не очень понятно. ;)
24K
29 марта 2007 года
Annechka
6 / / 28.03.2007
Ну например у нас есть функции с параметрами f1(a,b) и f2(c,d)
они возвращают свои значения и имеется ещё одна которая
использует указатель на функцию например F(f1,a,b)...


P.S//Жду вашей помощи C уважением Анна
320
29 марта 2007 года
m_Valery
1.0K / / 08.01.2007
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
int f1(int,int);
int f2(int,int);
int (*p1)(int,int) = f1;
int (*p2)(int,int) = f2;
int F(int (*p)(int,int),int,int);
int (*p3)(int (*p)(int,int),int,int) = F;
int _tmain(int argc, _TCHAR* argv[])
{
    int a,b;
    cout<<"Input first digit"<<endl;
    cin>>a;
             cout<<"Input second digit"<<endl;
    cin>>b;
    int sum = p1(a,b);
    int multiplies = p2(a,b);
    int Result = p3(p2,a,b);
    cout<<"first + second = "<<sum<<endl;
    cout<<"first * second = "<<multiplies<<endl;
    cout<<"function F = "<<Result<<endl;
    return 0;
}
int f1(int a,int b)
{
  return a + b;
}
int f2(int a,int b)
{
  return a*b;
}
int F(int (*p)(int a,int b),int a,int b)
{
  return p(a,b) - a - b;
}

Все ф-ии вызываются через указатели.f1 - подсчитывает сумму 2 чисел,
f2 - произведение,F - принимает в качестве параметра указатель на функцию и подсчитыывает разницу между значением этой ф-ии и параметрами a,b.
Этот код для Visual Studio, но не думаю что для Builder будут какие-то большие отличия.Язык то один - С++.Если будут какие то проблемы с
переносом спрашивай.Это по поводу поста Lerkin:)
24K
31 марта 2007 года
Annechka
6 / / 28.03.2007
:) [COLOR="RoyalBlue"]m_Valery[/COLOR] я вас очень - очень люблю !!! Спасибо вам большое за помощь !!!
Насчёт реализации в Borland Builder C++ там необходимо было мне удалить подключенный файлик #include "stdafx.h" и больше проблем не возникало огромное вам спасибо !!! Программа работает !!!
:)
PS:\ С уважением Анна :) :rolleyes:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог