#include <stdio.h>
void add_and_print(void *a, void *b, char type) {
// Write your logic here using type casting
switch (type) {
case 'i': // integer
int *ia, *ib;
ia = (int *) a;
ib = (int *) b;
printf("%d", (*ia + *ib));
return;
case 'f':
default:
float *fa, *fb;
fa = (float *) a;
fb = (float *) b;
printf ("%.1f", (*fa + *fb));
return;
}
}
int main() {
char type;
scanf(" %c", &type);
if (type == 'i') {
int x, y;
scanf("%d %d", &x, &y);
add_and_print(&x, &y, type);
} else if (type == 'f') {
float x, y;
scanf("%f %f", &x, &y);
add_and_print(&x, &y, type);
}
return 0;
}
convert void pointers to pointers to integers or floats dependenig on the type.
Input
i 10 20
Expected Output
30