A
ashmangat
Hey I am new, but I don't have time to intruduce myself yet.
I am intro to C++
and this is a programme I have to write.
all the direction are here, It will be very nice of someone to figure
this out.
note: I only in intro C++ which is about to be finished by the next two
weeks.
The topic which I am on in my book is "POINTERS"
Text from the book:
Write a program that can be used to gather statistical data about the
number
of movies college students see in a month. The program should perform
the
following steps:
Ask the user how many students were surveyed. An array of
integers with this many elements should be dynamically allocated.
Allow the user to enter the number of movies each student saw into the
array.
Calculate and display the average, median, and mode of the values
entered.
(Use the functions you wrote in problem 6 and 7 to calculate the median
and mode.)
Input Validation: Do not accept negative numbers for input.
Additional Notes:
Use the following skeleton for the main program:
void main(void)
{
int *dyn_array;
int mode, students;
float avrg;
do
{
cout << "How many students will you enter? ";
cin >> students;
}while ( students <= 0 );
dyn_array = create_array( students );
//this funtion creates a dynamic array
//and is found in the book
enter_data( dyn_array, students );
//use 'pointer' notation in this function to
//access array elements
mode = get_mode( dyn_array, students );
//check out pc6 for an explanation of 'mode'
//median = median( dyn_array, students );
//don't do median in this exercise
avrg = average( dyn_array, students );
//should be trivial
cout << "The array is: ";
showArray( dyn_array, students);
//you should already have this function
cout << endl;
cout << "The Mode is " << mode << ".\n";
cout << "The average is " << avrg << ".\n";
delete [] dyn_array;
return 0;
}
Some help (and requirements) for the mode function:
'mode' as explained in pc6: "In Statistics, the 'mode' of a set of
value is the
value, which occurs most often or with the greatest frequency".
Note: Very important to completely understand the explanation below.
Get
on the discussion board if there is any confusion.
The call:
mode = get_mode(dyn_array, student);
The function header:
int get_mode(int *student_data, int num_students)
get_mode should do the following:
create an array 'frequency' of 1000 integers. 1000 is arbitrarily
chosen as
the absolute maximum of movies a college student could see in a week.
This array
will keep track of frequencies of weekly movie watching values.
Intialize array 'frequency' elements to zeros (use a loop)
Populate the 'frequency' array with the data (how many students see 1,
2, 3,
etc. movies a week)
The following algorithm is a useful method to easily increment random
values:
Run a loop on 'student_data' from 0 to 'num_students'.
The content of 'student_data' array becomes the
index of the 'frequency' array and the content of that 'frequency'
array
element gets incremented. Very important to understand this process.
Here is a little animation help for
the sentence content of 'student_data' array becomes the index of the
'frequency' array'.
In subscript notation, it would look like this:
frequency [ student_data[index] ] ++
However, a requirement for the code above is to implement
student_data[index]' in pointer notation and leave frequency[] in
subscript
notation.
Example of processing the mode with 'frequency' and 'student_array':
If, at the beginning, the frequency array contains:
0 0 0 0 0 0 ...
and 'student_data' contains:
2 4 1 2 ...
In the loop the first element '2' points to the third element (index 2)
in the
'frequency' array and increments it. So now 'frequency' looks like
this:
0 0 1 0 0 0 ...
By the time the loop runs through all 4 elements of 'student_data',
'frequency'
will look like this:
0 1 2 0 1 0 ...
Notice that the 'frequency' array above now contains the mode: 2 movies
a week
(the third element, but index 2) contains the biggest number. Makes
sense? If
you aggree with the process described above, then you can write the
program to
accomplish it.
After the 'frequency' array is updated with frequencies of all data,
make a
new loop with the 'frequency' array to pick out the largest value. Use
the same
function used in earlier assignment. It should look something like:
for(i = 0; i < 1000; i++)
{
if(max < frequency)
{ max = frequency;
maxi = i;
}
}
return maxi -- remember that the index corresponds to the movies seen
per week!
Note: Do not worry about making the program handle bimodal values (mode
having
two values).
Don't forget to block-comment every function definition. Example:
//*******************************************
// enter_data()
// This function inputs data for all students
// into dynimacally created array
//*******************************************
I am intro to C++
and this is a programme I have to write.
all the direction are here, It will be very nice of someone to figure
this out.
note: I only in intro C++ which is about to be finished by the next two
weeks.
The topic which I am on in my book is "POINTERS"
Text from the book:
Write a program that can be used to gather statistical data about the
number
of movies college students see in a month. The program should perform
the
following steps:
Ask the user how many students were surveyed. An array of
integers with this many elements should be dynamically allocated.
Allow the user to enter the number of movies each student saw into the
array.
Calculate and display the average, median, and mode of the values
entered.
(Use the functions you wrote in problem 6 and 7 to calculate the median
and mode.)
Input Validation: Do not accept negative numbers for input.
Additional Notes:
Use the following skeleton for the main program:
void main(void)
{
int *dyn_array;
int mode, students;
float avrg;
do
{
cout << "How many students will you enter? ";
cin >> students;
}while ( students <= 0 );
dyn_array = create_array( students );
//this funtion creates a dynamic array
//and is found in the book
enter_data( dyn_array, students );
//use 'pointer' notation in this function to
//access array elements
mode = get_mode( dyn_array, students );
//check out pc6 for an explanation of 'mode'
//median = median( dyn_array, students );
//don't do median in this exercise
avrg = average( dyn_array, students );
//should be trivial
cout << "The array is: ";
showArray( dyn_array, students);
//you should already have this function
cout << endl;
cout << "The Mode is " << mode << ".\n";
cout << "The average is " << avrg << ".\n";
delete [] dyn_array;
return 0;
}
Some help (and requirements) for the mode function:
'mode' as explained in pc6: "In Statistics, the 'mode' of a set of
value is the
value, which occurs most often or with the greatest frequency".
Note: Very important to completely understand the explanation below.
Get
on the discussion board if there is any confusion.
The call:
mode = get_mode(dyn_array, student);
The function header:
int get_mode(int *student_data, int num_students)
get_mode should do the following:
create an array 'frequency' of 1000 integers. 1000 is arbitrarily
chosen as
the absolute maximum of movies a college student could see in a week.
This array
will keep track of frequencies of weekly movie watching values.
Intialize array 'frequency' elements to zeros (use a loop)
Populate the 'frequency' array with the data (how many students see 1,
2, 3,
etc. movies a week)
The following algorithm is a useful method to easily increment random
values:
Run a loop on 'student_data' from 0 to 'num_students'.
The content of 'student_data' array becomes the
index of the 'frequency' array and the content of that 'frequency'
array
element gets incremented. Very important to understand this process.
Here is a little animation help for
the sentence content of 'student_data' array becomes the index of the
'frequency' array'.
In subscript notation, it would look like this:
frequency [ student_data[index] ] ++
However, a requirement for the code above is to implement
student_data[index]' in pointer notation and leave frequency[] in
subscript
notation.
Example of processing the mode with 'frequency' and 'student_array':
If, at the beginning, the frequency array contains:
0 0 0 0 0 0 ...
and 'student_data' contains:
2 4 1 2 ...
In the loop the first element '2' points to the third element (index 2)
in the
'frequency' array and increments it. So now 'frequency' looks like
this:
0 0 1 0 0 0 ...
By the time the loop runs through all 4 elements of 'student_data',
'frequency'
will look like this:
0 1 2 0 1 0 ...
Notice that the 'frequency' array above now contains the mode: 2 movies
a week
(the third element, but index 2) contains the biggest number. Makes
sense? If
you aggree with the process described above, then you can write the
program to
accomplish it.
After the 'frequency' array is updated with frequencies of all data,
make a
new loop with the 'frequency' array to pick out the largest value. Use
the same
function used in earlier assignment. It should look something like:
for(i = 0; i < 1000; i++)
{
if(max < frequency)
{ max = frequency;
maxi = i;
}
}
return maxi -- remember that the index corresponds to the movies seen
per week!
Note: Do not worry about making the program handle bimodal values (mode
having
two values).
Don't forget to block-comment every function definition. Example:
//*******************************************
// enter_data()
// This function inputs data for all students
// into dynimacally created array
//*******************************************