#include <stdio.h>
/* ==================================================
* Function Prototype
* ================================================== */
int frequency (int theArray[], int n, int x);
/* ==================================================
* Test Driver (main)
* ================================================== */
// **************************************************
// Function: main
//
// Description:
// Tests the frequency() function with the provided
// example where x = 23 appears 3 times.
//
// Parameters:
// (none)
//
// Returns:
// 0 on successful execution
//
// Notes:
// - Uses only integers.
// **************************************************
int main(void)
{
int data[] = {5, 7, 23, 8, 23, 67, 23};
int n = 7;
int x = 23;
int result = frequency(data, n, x);
printf("frequency of %d in first %d elements = %d (expected 3)\n", x, n, result);
/* Extra quick checks */
printf("freq of 7 = %d (expected 1)\n", frequency
(data
, n
, 7)); printf("freq of 99 = %d (expected 0)\n", frequency
(data
, n
, 99));
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 (0..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 must ensure n does not exceed the array's actual 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+CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGdW5jdGlvbiBQcm90b3R5cGUKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KaW50IGZyZXF1ZW5jeSAoaW50IHRoZUFycmF5W10sIGludCBuLCBpbnQgeCk7CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBUZXN0IERyaXZlciAobWFpbikKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vIEZ1bmN0aW9uOiBtYWluCi8vCi8vIERlc2NyaXB0aW9uOgovLyAgIFRlc3RzIHRoZSBmcmVxdWVuY3koKSBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZAovLyAgIGV4YW1wbGUgd2hlcmUgeCA9IDIzIGFwcGVhcnMgMyB0aW1lcy4KLy8KLy8gUGFyYW1ldGVyczoKLy8gICAobm9uZSkKLy8KLy8gUmV0dXJuczoKLy8gICAwIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uCi8vCi8vIE5vdGVzOgovLyAgIC0gVXNlcyBvbmx5IGludGVnZXJzLgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgZGF0YVtdID0gezUsIDcsIDIzLCA4LCAyMywgNjcsIDIzfTsKICAgIGludCBuID0gNzsKICAgIGludCB4ID0gMjM7CgogICAgaW50IHJlc3VsdCA9IGZyZXF1ZW5jeShkYXRhLCBuLCB4KTsKICAgIHByaW50ZigiZnJlcXVlbmN5IG9mICVkIGluIGZpcnN0ICVkIGVsZW1lbnRzID0gJWQgKGV4cGVjdGVkIDMpXG4iLAogICAgICAgICAgIHgsIG4sIHJlc3VsdCk7CgogICAgLyogRXh0cmEgcXVpY2sgY2hlY2tzICovCiAgICBwcmludGYoImZyZXEgb2YgNyAgPSAlZCAoZXhwZWN0ZWQgMSlcbiIsIGZyZXF1ZW5jeShkYXRhLCBuLCA3KSk7CiAgICBwcmludGYoImZyZXEgb2YgOTkgPSAlZCAoZXhwZWN0ZWQgMClcbiIsIGZyZXF1ZW5jeShkYXRhLCBuLCA5OSkpOwoKICAgIHJldHVybiAwOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbgogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8gRnVuY3Rpb246IGZyZXF1ZW5jeQovLwovLyBEZXNjcmlwdGlvbjoKLy8gICBDb3VudHMgaG93IG1hbnkgdGltZXMgdGhlIHZhbHVlIHggYXBwZWFycyBpbiB0aGUKLy8gICBmaXJzdCBuIGVsZW1lbnRzIG9mIHRoZUFycmF5LgovLwovLyBQYXJhbWV0ZXJzOgovLyAgIHRoZUFycmF5W10gLSBhcnJheSBvZiBpbnRlZ2VycyB0byBzZWFyY2gKLy8gICBuICAgICAgICAgIC0gbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGV4YW1pbmUgKDAuLm4tMSkKLy8gICB4ICAgICAgICAgIC0gdmFsdWUgdG8gY291bnQgd2l0aGluIHRoZUFycmF5Ci8vCi8vIFJldHVybnM6Ci8vICAgZnJlcXVlbmN5IC0gbnVtYmVyIG9mIHRpbWVzIHggYXBwZWFycyBhbW9uZyB0aGUgZmlyc3QgbiBlbGVtZW50cwovLwovLyBOb3RlczoKLy8gICAtIElmIG4gPD0gMCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgMC4KLy8gICAtIENhbGxlciBtdXN0IGVuc3VyZSBuIGRvZXMgbm90IGV4Y2VlZCB0aGUgYXJyYXkncyBhY3R1YWwgbGVuZ3RoLgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgppbnQgZnJlcXVlbmN5IChpbnQgdGhlQXJyYXlbXSwgaW50IG4sIGludCB4KQp7CiAgICBpbnQgZnJlcXVlbmN5OyAvKiBob3cgbWFueSB0aW1lcyB4IGlzIGZvdW5kICovCiAgICBpbnQgaTsgICAgICAgICAvKiBsb29wIGNvdW50ZXIgKi8KCiAgICBmcmVxdWVuY3kgPSAwOyAvKiBpbml0aWFsaXplIGNvdW50ICovCgogICAgLyogbG9vcCB0aHJvdWdoIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlQXJyYXkgdXAgdG8gbiAoZXhjbHVzaXZlKSAqLwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICAvKiBpZiB0aGUgZWxlbWVudCBlcXVhbHMgeCwgaW5jcmVtZW50IGZyZXF1ZW5jeSAqLwogICAgICAgIGlmICh0aGVBcnJheVtpXSA9PSB4KQogICAgICAgIHsKICAgICAgICAgICAgZnJlcXVlbmN5Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmcmVxdWVuY3k7Cn0=