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);
};