#include <stdio.h>
/* ==================================================
* Function Prototype
* ================================================== */
int frequency ( int theArray[ ] , int n, int x) ;
/* ==================================================
* Test Driver (main)
* ================================================== */
// **************************************************
// Function: main
//
// Description:
// Tests the frequency() function with several arrays
// and prints the results, including the provided
// example where x = 23 appears 3 times.
//
// Parameters:
// (none)
//
// Returns:
// 0 on successful execution
//
// Notes:
// - All values are integers as required.
// - Includes edge-case tests (n = 0, x not present).
// **************************************************
int main( void )
{
/* Test 1: Provided example */
int data1[ ] = { 5 , 7 , 23 , 8 , 23 , 67 , 23 } ;
int n1 = 7 ;
int x1 = 23 ;
int result1 = frequency( data1, n1, x1) ;
printf ( "Test 1: frequency of %d in first %d elements = %d (expected 3)\n " , x1, n1, result1) ;
/* Test 2: Value not present */
int data2[ ] = { 1 , 2 , 3 , 4 , 5 } ;
int n2 = 5 ;
int x2 = 99 ;
int result2 = frequency( data2, n2, x2) ;
printf ( "Test 2: frequency of %d in first %d elements = %d (expected 0)\n " , x2, n2, result2) ;
/* Test 3: Multiple occurrences including first and last positions */
int data3[ ] = { 7 , 7 , 1 , 2 , 7 , 3 , 7 , 4 } ;
int n3 = 8 ;
int x3 = 7 ;
int result3 = frequency( data3, n3, x3) ;
printf ( "Test 3: frequency of %d in first %d elements = %d (expected 4)\n " , x3, n3, result3) ;
/* Test 4: Edge case n = 0 (nothing to scan) */
int data4[ ] = { 10 , 10 , 10 } ;
int n4 = 0 ;
int x4 = 10 ;
int result4 = frequency( data4, n4, x4) ;
printf ( "Test 4: frequency of %d in first %d elements = %d (expected 0)\n " , x4, n4, result4) ;
return 0 ;
}
/* ==================================================
* Function Implementation
* ================================================== */
// **************************************************
// Function: frequency
//
// Description:
// Counts how many times the value x appears in the
// first n elements of theArray.
//
// Parameters:
// theArray[] - array of integers to search
// n - number of elements to examine (from index 0 to n-1)
// x - value to count within theArray
//
// Returns:
// frequency - number of times x appears among the first n elements
//
// Notes:
// - If n <= 0, the function returns 0.
// - Caller is responsible for ensuring n does not exceed the array's length.
// **************************************************
int frequency ( int theArray[ ] , int n, int x)
{
int frequency; /* how many times x is found */
int i; /* loop counter */
frequency = 0 ; /* initialize count */
/* loop through every element in theArray up to n (exclusive) */
for ( i = 0 ; i < n; i++ )
{
/* if the element equals x, increment frequency */
if ( theArray[ i] == x)
{
frequency++;
}
}
return frequency;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGdW5jdGlvbiBQcm90b3R5cGUKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KaW50IGZyZXF1ZW5jeSAoaW50IHRoZUFycmF5W10sIGludCBuLCBpbnQgeCk7CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBUZXN0IERyaXZlciAobWFpbikKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vIEZ1bmN0aW9uOiBtYWluCi8vCi8vIERlc2NyaXB0aW9uOgovLyAgIFRlc3RzIHRoZSBmcmVxdWVuY3koKSBmdW5jdGlvbiB3aXRoIHNldmVyYWwgYXJyYXlzCi8vICAgYW5kIHByaW50cyB0aGUgcmVzdWx0cywgaW5jbHVkaW5nIHRoZSBwcm92aWRlZAovLyAgIGV4YW1wbGUgd2hlcmUgeCA9IDIzIGFwcGVhcnMgMyB0aW1lcy4KLy8KLy8gUGFyYW1ldGVyczoKLy8gICAobm9uZSkKLy8KLy8gUmV0dXJuczoKLy8gICAwIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uCi8vCi8vIE5vdGVzOgovLyAgIC0gQWxsIHZhbHVlcyBhcmUgaW50ZWdlcnMgYXMgcmVxdWlyZWQuCi8vICAgLSBJbmNsdWRlcyBlZGdlLWNhc2UgdGVzdHMgKG4gPSAwLCB4IG5vdCBwcmVzZW50KS4KLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKaW50IG1haW4odm9pZCkKewogICAgLyogVGVzdCAxOiBQcm92aWRlZCBleGFtcGxlICovCiAgICBpbnQgZGF0YTFbXSA9IHs1LCA3LCAyMywgOCwgMjMsIDY3LCAyM307CiAgICBpbnQgbjEgPSA3OwogICAgaW50IHgxID0gMjM7CiAgICBpbnQgcmVzdWx0MSA9IGZyZXF1ZW5jeShkYXRhMSwgbjEsIHgxKTsKICAgIHByaW50ZigiVGVzdCAxOiBmcmVxdWVuY3kgb2YgJWQgaW4gZmlyc3QgJWQgZWxlbWVudHMgPSAlZCAoZXhwZWN0ZWQgMylcbiIsCiAgICAgICAgICAgeDEsIG4xLCByZXN1bHQxKTsKCiAgICAvKiBUZXN0IDI6IFZhbHVlIG5vdCBwcmVzZW50ICovCiAgICBpbnQgZGF0YTJbXSA9IHsxLCAyLCAzLCA0LCA1fTsKICAgIGludCBuMiA9IDU7CiAgICBpbnQgeDIgPSA5OTsKICAgIGludCByZXN1bHQyID0gZnJlcXVlbmN5KGRhdGEyLCBuMiwgeDIpOwogICAgcHJpbnRmKCJUZXN0IDI6IGZyZXF1ZW5jeSBvZiAlZCBpbiBmaXJzdCAlZCBlbGVtZW50cyA9ICVkIChleHBlY3RlZCAwKVxuIiwKICAgICAgICAgICB4MiwgbjIsIHJlc3VsdDIpOwoKICAgIC8qIFRlc3QgMzogTXVsdGlwbGUgb2NjdXJyZW5jZXMgaW5jbHVkaW5nIGZpcnN0IGFuZCBsYXN0IHBvc2l0aW9ucyAqLwogICAgaW50IGRhdGEzW10gPSB7NywgNywgMSwgMiwgNywgMywgNywgNH07CiAgICBpbnQgbjMgPSA4OwogICAgaW50IHgzID0gNzsKICAgIGludCByZXN1bHQzID0gZnJlcXVlbmN5KGRhdGEzLCBuMywgeDMpOwogICAgcHJpbnRmKCJUZXN0IDM6IGZyZXF1ZW5jeSBvZiAlZCBpbiBmaXJzdCAlZCBlbGVtZW50cyA9ICVkIChleHBlY3RlZCA0KVxuIiwKICAgICAgICAgICB4MywgbjMsIHJlc3VsdDMpOwoKICAgIC8qIFRlc3QgNDogRWRnZSBjYXNlIG4gPSAwIChub3RoaW5nIHRvIHNjYW4pICovCiAgICBpbnQgZGF0YTRbXSA9IHsxMCwgMTAsIDEwfTsKICAgIGludCBuNCA9IDA7CiAgICBpbnQgeDQgPSAxMDsKICAgIGludCByZXN1bHQ0ID0gZnJlcXVlbmN5KGRhdGE0LCBuNCwgeDQpOwogICAgcHJpbnRmKCJUZXN0IDQ6IGZyZXF1ZW5jeSBvZiAlZCBpbiBmaXJzdCAlZCBlbGVtZW50cyA9ICVkIChleHBlY3RlZCAwKVxuIiwKICAgICAgICAgICB4NCwgbjQsIHJlc3VsdDQpOwoKICAgIHJldHVybiAwOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbgogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8gRnVuY3Rpb246IGZyZXF1ZW5jeQovLwovLyBEZXNjcmlwdGlvbjoKLy8gICBDb3VudHMgaG93IG1hbnkgdGltZXMgdGhlIHZhbHVlIHggYXBwZWFycyBpbiB0aGUKLy8gICBmaXJzdCBuIGVsZW1lbnRzIG9mIHRoZUFycmF5LgovLwovLyBQYXJhbWV0ZXJzOgovLyAgIHRoZUFycmF5W10gLSBhcnJheSBvZiBpbnRlZ2VycyB0byBzZWFyY2gKLy8gICBuICAgICAgICAgIC0gbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGV4YW1pbmUgKGZyb20gaW5kZXggMCB0byBuLTEpCi8vICAgeCAgICAgICAgICAtIHZhbHVlIHRvIGNvdW50IHdpdGhpbiB0aGVBcnJheQovLwovLyBSZXR1cm5zOgovLyAgIGZyZXF1ZW5jeSAtIG51bWJlciBvZiB0aW1lcyB4IGFwcGVhcnMgYW1vbmcgdGhlIGZpcnN0IG4gZWxlbWVudHMKLy8KLy8gTm90ZXM6Ci8vICAgLSBJZiBuIDw9IDAsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuCi8vICAgLSBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIG4gZG9lcyBub3QgZXhjZWVkIHRoZSBhcnJheSdzIGxlbmd0aC4KLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKaW50IGZyZXF1ZW5jeSAoaW50IHRoZUFycmF5W10sIGludCBuLCBpbnQgeCkKewogICAgaW50IGZyZXF1ZW5jeTsgLyogaG93IG1hbnkgdGltZXMgeCBpcyBmb3VuZCAqLwogICAgaW50IGk7ICAgICAgICAgLyogbG9vcCBjb3VudGVyICovCgogICAgZnJlcXVlbmN5ID0gMDsgLyogaW5pdGlhbGl6ZSBjb3VudCAqLwoKICAgIC8qIGxvb3AgdGhyb3VnaCBldmVyeSBlbGVtZW50IGluIHRoZUFycmF5IHVwIHRvIG4gKGV4Y2x1c2l2ZSkgKi8KICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgLyogaWYgdGhlIGVsZW1lbnQgZXF1YWxzIHgsIGluY3JlbWVudCBmcmVxdWVuY3kgKi8KICAgICAgICBpZiAodGhlQXJyYXlbaV0gPT0geCkKICAgICAgICB7CiAgICAgICAgICAgIGZyZXF1ZW5jeSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZnJlcXVlbmN5Owp9