#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;
}
Помогите с использованием указателя на функцию
Мне дали лабораторную в университете, но у меня не получается её сделать... :( :confused:
Задание звучит так:
Необходимо написать программу в консольном приложении в которой имеется 2 функции с параметрами которые возвращают значения, и ещё одна которая
использует указатель на функцию. (Функции можно взять любые)
Помогите мне пожалуйста, я очень буду благодарна вам...
P.S// C уважением Анна:)
Так какие функции то ? В чем проблема ? Указатель на ф-ию можно использовать ,например, в qsort - ф-ии быстрой сортировки
Код:
#include "stdafx.h"
...
int _tmain(int argc, _TCHAR* argv[])
...
...
int _tmain(int argc, _TCHAR* argv[])
...
Думается, это будет студентке не очень понятно. ;)
они возвращают свои значения и имеется ещё одна которая
использует указатель на функцию например F(f1,a,b)...
P.S//Жду вашей помощи C уважением Анна
Код:
#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;
}
#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:)
Насчёт реализации в Borland Builder C++ там необходимо было мне удалить подключенный файлик #include "stdafx.h" и больше проблем не возникало огромное вам спасибо !!! Программа работает !!! :)
PS:\ С уважением Анна :) :rolleyes: