I'm struggling with pointers in C. I have to write a program that will make a 3 operations on one number (sqrt, sin, exp) using functions and pointers. I have done it but I have a problem to write a function that takes as parameter a pointer to any of the above functions + a floating point number, returning the result of the corresponding calculation. In main function I attached working code without this function. I don't have any idea how to write this function and I wrote my try in this code. Here I attach code which I have wrote:
#include <stdio.h>
#include <math.h>
double square(double *);
double sinus(double *);
double exponential(double *);
void count(*square, double result);
double number, square_result, sinus_result, exponential_result;
int main()
{
printf("Give number: ");
scanf("%lf", &number);
square_result = square(&number);
sinus_result = sinus(&number);
exponential_result = exponential(&number);
printf("%lf\n", square_result);
printf("%lf\n", sinus_result);
printf("%lf", exponential_result);
}
double square(double *x)
{
double square_result;
square_result = sqrt(*x);
return square_result;
}
double sinus(double *x)
{
double sinus_result;
sinus_result = sin(*x);
return sinus_result;
}
double exponential(double *x)
{
double exponential_result;
exponential_result = exp(*x);
return exponential_result;
}
void count(*square, double result)
{
result = square(&number);
}
I created a function call_func
taking a pointer on a function as an argument and a double*
like the following:
//arguments are a pointer to any functions taking argument double* and a double* number
double call_func(double (*MyFunction)(double* arg), double* number)
{
return (MyFunction)(number);
}
// a small edit, imho you do not need to pass number
by pointer
This shall be called like this:
square_result = call_func(square, number);
sinus_result = call_func(sinus, number);
exponential_result = call_func(exponential,number);
Here it is, integrated in your code:
// here is my function that takes a function pointer as an argument
double call_func(double (*MyFunction)(double* arg), double number);
int main()
{
printf("Give number: ");
scanf("%lf", &number);
square_result = square(&number);
sinus_result = sinus(&number);
exponential_result = exponential(&number);
printf("%lf\n", square_result);
printf("%lf\n", sinus_result);
printf("%lf", exponential_result);
// call of my general function
printf("\n********************************\n");
printf("\n\nUSAGE OF FUNCTION POINTER \n");
double square_result2 = 0.0;
double sinus_result2 = 0.0;
double exponential_result2 =0.0;
square_result2 = call_func(square, &number);
sinus_result2 = call_func(sinus, &number);
exponential_result2 = call_func(exponential, &number);
printf("%lf\n", square_result2);
printf("%lf\n", sinus_result2);
printf("%lf", exponential_result2);
}
//arguments are a pointer to any functions taking argument double and a double number
double call_func(double (*MyFunction)(double* arg), double* number)
{
return (MyFunction)(number);
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments