UMBC CMSC201, Computer Science I, Fall 1994 Section 0101, 0102 and Honors

Project 5

Due: Wednesday, December 14, 1994


The objective of this program is to practice working with arrays, pointers and parameter passing by reference.


Your task is to write a function called ReportFrequency which finds the numbers in a given integer array that occurs most often and least often. The results of this function should be stored in parameters that are passed by reference. The function prototype of ReportFrequency is:
void ReportFrequency(int A[], int size, int *most_often, int *least_often) ;
To find the numbers which occur most often and least often, you should use the following strategy.
  1. Dynamically create an auxiliary array of integers frequency with size elements using the NewArrray function provided in the genlib.h interface (see page 481 of the textbook).
  2. Initialize each entry of the frequency array to zero.
  3. For each element of the array A[i] find the smallest array index k where the value stored in A[i] occurs. Add one to frequency[k].
  4. Use frequency to find the numbers in the original array which occurs most often and least often.
For example, if the array A contained the numbers: .
   91, 93, 98, 92, 92, 95, 93, 92, 91, 95, 99, 92, 98.
Then, the frequency array would contain:
    2,  2,  2,  4,  0,  2,  0,  0,  0,  0,  1,  0,  0.
This indicates that 91 occurred twice, 93 occurred 2 times, 98 occurred twice, 92 occurred 4 times, 95 occurred twice and 99 occurred once. Write a main program that prompts the user to enter a list of non-negative numbers terminated by the sentinel value -1. Your main program should then call the ReportFrequency function and report the results.

Implementation Notes:

What to turn in:

Make up 5 difficult sets of input to your program. These inputs should show that your program can handle different kinds of input, so the nastier they are, the better. For example, they should have different sizes. Use the script command to save a copy of your output for all of the sample runs. To do this, remove any old typescript files you have, type script, run your program to duplicate the sample runs then type exit at the prompt. Use an editor (e.g., emacs) to check that the file actually contains your output before you turn it in. When you have successfully created the typescript file, and have deleted all the blank lines at the end of your program, submit your program using the submit201 command that you copied for Project~1. To submit both your project and the typescript file, issue the command:
   % submit201 proj5.c typescript
Please check your own mail to see if you have submitted the correct files.
Last Modified: Sun Dec 4 14:48:17 EST 1994

Richard Chang,