#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
// function prototypes
void mean(int arr[],int size ,float *);
void median(int arr[],int size,float *);
void mode(int sarr[],int size, int frearr[],int size1, int *);
int intcmp(const void *v1, const void *v2);
//main program
int main()
{
//variable, array, pointer declarations
int score[100]={0},medscore[100]={0},frearr[101]={0};
int cntr=0, arrLength=0, mod=0, min=0, max=0;
float *fPtr, ave=0.00,med=0.00;
char response='Y';
do {
clrscr();
ave=0.00;
med=0.00;
mod=0;
min=0;
max=0;
for(cntr=0;cntr<100;cntr++)
{
score[cntr]=0;
medscore[cntr]=0;
frearr[cntr]=0;
}
//gets no of scores values and verify if within the declared array size
do
{
printf("\nEnter number of student scores you would like to store?:");
scanf("%i", &arrLength);
if(arrLength<=0 ||arrLength>100)
printf("\nEnter values between 1 to 100");
} while(arrLength<=0 ||arrLength>100);
//gets the scores of individual students and
//verifies if value is within range of value accepted
for(cntr=0;cntr<arrLength;cntr++)
{
printf("\nEnter score of student no %i:", cntr+1);
scanf("%i", &score[cntr]);
medscore[cntr]=score[cntr];
}
//compute the mean passing the required parameters
mean(score,arrLength,&ave);
//compute the median passing the required parameters
median(medscore,arrLength,&med);
//select the minimum from the list
min=medscore[0];
//select the maximum from the list
max=medscore[arrLength-1];
//compute the mode passing the required parameters
mode(medscore,arrLength, frearr, 101, &mod);
//outputing
//unsorted array
printf("\nUnsorted Array:");
for(cntr=0;cntr<arrLength;cntr++)
{
printf(" %i",score[cntr]);
}
printf("\nSorted Array:");
for(cntr=0;cntr {
printf(" %i",medscore[cntr]);
}
printf("\nMinimum = %i",min);
printf("\nMaximum = %i", max);
printf("\nMean = %f",ave);
printf("\nMedian = %f",med);
printf("\nMode = %i",mod);
printf("\nTry Again Y/N:");
scanf("%s", &response);
fflush(stdin);
}while(response=='Y'||response=='y');
getch();
return 0;
}
void mean(int arr[],int size,float *fPtr)
{
int cntr=0,sum=0;
for(;cntr {
sum =sum+arr[cntr];
}
*fPtr=(float)sum/size;
}
void median(int arr[],int size,float *fPtr)
{
int index=0;
float med;
// Sort array
qsort(arr,size,sizeof(arr[0]), intcmp);
if(size%2==0)
{ //even 6/2 = 3, take the values of 2nd and 3rd values of sorted array
index=size/2;
med=(float)(arr[index-1]+arr[index])/2;
*fPtr=med;
}
else
{ //odd 5/2=2.5, take the value of the 2nd element of the sorted array
index=(int)(size/2);
*fPtr=arr[index];
}
}
void mode(int sarr[],int size, int frearr[], int size1, int *imPtr)
{
int cntro=0,cntri=0;
//compare 1st element with the tally
for(cntro=0;cntro {
//tally frequency
cntri=sarr[cntro];
frearr[cntri] += 1;
}
for(cntro = 0; cntro {
if(*imPtr < (frearr[cntro]))
*imPtr = cntro;
}
}
int intcmp(const void *v1, const void *v2)
{
return (*(int *)v1-*(int *)v2);
}
Wednesday, October 28, 2009
Computing mean, median and mode for ungrouped data
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment