Write a program that can be used to gather statistical data about the numbr of m
ID: 3620151 • Letter: W
Question
Write a program that can be used to gather statistical data about the numbr of movies college students see in a month. The program should perform the following steps:A) Ask the user how many students were surveyed. An array of integers with this many elements should then be dynamically allocated.
B) Allow the user to enter the number of movies each student saw into an array.
C) Calculate and display the average, median, and mode of the values entered.
Input Validation: Do not accept negative numbers for input.
Explanation / Answer
please rate - thanks#include <iostream>
using namespace std;
void getinfo(int*, int);
void sort(int [], int);
double average(int*, int);
double median(int*, int);
int get_mode(int*, int);
int main()
{ int*array;
int num;
int mode,i,range;
float avg;
cout<<"enter number of students? ";
cin>>num;
while(num<=0)
{cout<<"Invalid Entry ";
cout<<"enter number of students? ";
cin>>num;
}
array=new int[num];
getinfo(array, num);
cout<<" The array is: ";
for(i=0;i<num;i++)
cout<<"student "<<i+1<<" saw "<<*(array+i)<<" movies. ";
sort(array, num);
cout<<"the median is "<<median(array, num) << endl;
cout<<"the average is "<<average(array, num) << endl;
mode=get_mode(array, num);
if(mode<0)
cout<<"There is no mode. ";
else
cout<<"The mode is " << mode << endl;
delete [] array;
system("pause");
return 0;
}
void getinfo(int a[], int n)
{int i;
for(i=0;i<n;i++)
{cout<<"How many movies did student "<<(i+1)<< " see? ";
cin >> a[i];
while(a[i]<0)
{cout<<"Invalid entry, must be >= 0 ";
cout<<"How many movies did student "<<(i+1)<< " see? ";
cin>>a[i];
}
}
}
double average(int a[], int num)
{ int tot=0,i;
double avg;
for(i=0;i<num; i++)
tot+=a[i];
avg=(double)tot/num;
return avg;
}
void sort(int a[], int n)
{ int i,j,t;
for(i=0;i<n-1;i++)
for(j=i;j<n;j++)
if(a[i]>a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
}
}
double median(int* a, int n)
{ int m1,m2;
if (n%2==0)
{m1=n/2;
m2=(n/2)-1;
return((*(a+m1)+*(a+m2))/2.);
}
else
return *(a+(n/2));
}
int get_mode(int* a, int n)
{
int* count,most,index,i,j;
count= new int[n];
for (i= 0;i< n;i++)
count[i] = 0;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{if(*(a+j)==*(a +i))
(*(count+i))++;
}
}
most=*count;
index=0;
for (i=1;i<n;i++)
{if (*(count+i) >most)
{most=*(count+i);
index=i;
}
}
if (most == 1)
return -1;
else
return *(a+index);
}
Related Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.