-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path44_mean_using_void.c
140 lines (132 loc) · 2.68 KB
/
44_mean_using_void.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/******************************************************************
DOCUMENTATION:
NAME : V. KARTHIEKEYAN
DATE : 15.07.2021
DESCRIPTION : WAP to implement binary search for all basic datatypes.
OUTPUT :./a.out
ENTER THE NUMBER OF ELEMENTS IN THE ARRAY :3
CHOOSE THE OPERATION ON:
1.int
2.short
3.float
4.double
ENTER THE CHOICE: 4
ENTER THE 3 ELEMENTS
[0]-2.35
[1]-2.314
[2]-2.314
mean=2.326
DO YOU WANT TO CONTINUE(Y/y): y
ENTER THE NUMBER OF ELEMENTS IN THE ARRAY :3
CHOOSE THE OPERATION ON:
1.int
2.short
3.float
4.double
ENTER THE CHOICE: 1
ENTER THE 3 ELEMENTS
[0]-2
[1]-3
[2]-5
mean=3.33333
DO YOU WANT TO CONTINUE(Y/y): n
******************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<stdio_ext.h>
double cal_mean(void *ptr,int n,int );
int main()
{
int n,i,operation;
char choice;
double mean;
do
{
mean = 0;
void *ptr;
ptr=NULL;
printf("\nENTER THE NUMBER OF ELEMENTS IN THE ARRAY :");
scanf("%d",&n);
printf("CHOOSE THE OPERATION ON: \n1.int\n2.short\n3.float\n4.double\nENTER THE CHOICE: ");
scanf("%d",&operation);
printf("ENTER THE %d ELEMENTS\n",n);
switch(operation)
{
case 1:
ptr = malloc(n * sizeof(int));
for(i = 0; i < n; i++)
{
printf("[%d]-",i);
scanf("%d",&*(int *)ptr+i);
}
mean=cal_mean(ptr,n, operation);
free(ptr);
break;
case 2:
ptr = malloc(n * sizeof(short));
for(i=0;i<n;i++)
{
printf("[%d]-",i);
scanf("%hd",&*(short *)ptr+i);
}
mean=cal_mean(ptr,n, operation);
free(ptr);
break;
case (3):
ptr = malloc(n * sizeof(float));
for(i=0;i<n;i++)
{
printf("[%d]-",i);
scanf("%f",&*(float *)ptr+i);
}
mean=cal_mean(ptr,n, operation);
free(ptr);
break;
case (4):
ptr = malloc(n* sizeof(double));
for(i=0;i<n;i++)
{
printf("[%d]-",i);
scanf("%lf",&*(double *)ptr+i);
}mean=cal_mean(ptr,n, operation);
free(ptr);
break;
default:
printf("ENTER VALID CHOICE OF DATA TYPE\n");
goto error;
}
ptr=NULL;
printf("mean=%g ",mean);
error:
__fpurge(stdin);
printf("\nDO YOU WANT TO CONTINUE(Y/y): ");
scanf(" %c",&choice);
}while(choice=='y' || choice=='Y');
return 0;
}
/* calculate mean according to the datatype selected*/
double cal_mean(void *ptr,int n,int operation)
{
double sum=0;
if(operation == 1)
{
for(int i = 0 ; i < n ; i++)
sum = sum + *((int *)ptr+i);
}
else if(operation ==2)
{
for(int i = 0 ; i < n ; i++)
sum = sum + *((short *)ptr+i);
}
else if(operation == 3)
{
for(int i = 0 ; i < n ; i++)
sum = sum + *((float *)ptr+i);
}
else if(operation ==4)
{
for(int i = 0 ; i < n ; i++)
sum = sum + *((double *)ptr+i);
}
return sum/n;
}