out: main.o operation.o   
	cc -o out main.o operation.o   
main.o: main.c   
	cc -c main.c   
operation.o: operation.c   
	cc -c operation.c





int main()   
{   
operation();   
return 0;   
}   





#include "structure.h"   
#include "function.h"   
operation ()   
{   
struct strfunptr *ptr; 
ptr = (struct strfunptr*)malloc(sizeof(ptr));   
int ch;   
do   
{   
printf("1.Add \n");   
printf("2.Sub \n");   
printf("3.Mul \n");   
printf("4.Div \n");   
printf("Enter the operation Choice\n");   
scanf("%d",&ch);   
/*select option*/   
switch(ch)   
{   
case 1 : printf("\nEnter the numbers :");scanf("%f %f",&ptr->a,&ptr->b);   
ptr->Func = Plus;   
printf("Addition is");   
break;   
case 2 : printf("\nEnter the numbers :");   
scanf("%f %f",&ptr->a,&ptr->b);   
ptr->Func = Minus;   
printf("Substraction is");   
break;   
case 3 : printf("\nEnter the numbers :");   
scanf("%f %f",&ptr->a,&ptr->b);   
ptr->Func = Mult;   
printf("Multiplication is");   
break;   
case 4 : printf("\nEnter the numbers :");   
scanf("%f %f",&ptr->a,&ptr->b);   
ptr->Func = Div;   
printf("Division is");   
break;   
default :   
printf("\nInvalid Choice\n");   
exit(0);   
}   
/*call function pointer*/   
printf(" %f\n",ptr->Func(ptr->a,ptr->b));   
}while(1);   
}   






float Plus(float a, float b)   
{   
return a + b;   
} 
float Minus(float a, float b)   
{   
return a - b;   
}   
float Mult(float a, float b)   
{   
return a * b;   
}   
float Div(float a, float b)   
{   
return a / b;   
}   





#include <stdio.h>   
#include <string.h>   
#include <stdlib.h>   
struct strfunptr   
{   
float a;   
float b;   
float (*Func)(float,float);   
};