Write a Program in C That Survey Data Analysis With Arrays Computing the Mean Median and Mode of the Data

// Survey data analysis with arrays; 
// computing the mean, median and mode of the data.
#include <stdio.h>
#define SIZE 99

// function prototypes
void mean( const unsigned int answer[] );
void median( unsigned int answer[] );
void mode( unsigned int freq[], const unsigned int answer[] ) ;
void bubbleSort( unsigned int a[] );
void printArray( const unsigned int a[] );

// function main begins program execution
int main( void )
{
   unsigned int frequency[ 10 ] = { 0 }; // initialize array frequency
   
   // initialize array response
   unsigned int response[ SIZE ] =             
      { 6, 7, 8, 9, 8, 7, 8, 9, 8, 9,
        7, 8, 9, 5, 9, 8, 7, 8, 7, 8,
        6, 7, 8, 9, 3, 9, 8, 7, 8, 7,
        7, 8, 9, 8, 9, 8, 9, 7, 8, 9,
        6, 7, 8, 7, 8, 7, 9, 8, 9, 2,
        7, 8, 9, 8, 9, 8, 9, 7, 5, 3,
        5, 6, 7, 2, 5, 3, 9, 4, 6, 4,
        7, 8, 9, 6, 8, 7, 8, 9, 7, 8,
        7, 4, 4, 2, 5, 3, 8, 7, 5, 6,
        4, 5, 6, 1, 6, 5, 7, 8, 7 };

   // process responses
   mean( response );
   median( response );
   mode( frequency, response );
} // end main

// calculate average of all response values
void mean( const unsigned int answer[] )
{
   size_t j; // counter for totaling array elements
   unsigned int total = 0; // variable to hold sum of array elements

   printf( "%s\n%s\n%s\n", "********", "  Mean", "********" );

   // total response values
   for ( j = 0; j < SIZE; ++j ) {
      total += answer[ j ];
   } // end for

   printf( "The mean is the average value of the data\n"
           "items. The mean is equal to the total of\n"
           "all the data items divided by the number\n"
           "of data items ( %u ). The mean value for\n"
           "this run is: %u / %u = %.4f\n\n",
           SIZE, total, SIZE, (  double  ) total / SIZE );
} // end function mean

// sort array and determine median element's value
void median( unsigned int answer[] )
{
   printf( "\n%s\n%s\n%s\n%s", 
           "********", " Median", "********", 
           "The unsorted array of responses is" );

   printArray( answer ); // output unsorted array

   bubbleSort( answer ); // sort array

   printf( "%s", "\n\nThe sorted array is" );
   printArray( answer ); // output sorted array

   // display median element
   printf( "\n\nThe median is element %u of\n"
           "the sorted %u element array.\n"
           "For this run the median is %u\n\n",
           SIZE / 2, SIZE, answer[ SIZE / 2 ] );
} // end function median

// determine most frequent response
void mode( unsigned int freq[], const unsigned int answer[] )
{
   size_t rating; // counter for accessing elements 1-9 of array freq
   size_t j; // counter for summarizing elements 0-98 of array answer
   unsigned int h; // counter for diplaying histograms freq array values
   unsigned int largest = 0; // represents largest frequency
   unsigned int modeValue = 0; // represents most frequent response

   printf( "\n%s\n%s\n%s\n", 
           "********", "  Mode", "********" );

   // initialize frequencies to 0
   for ( rating = 1; rating <= 9; ++rating ) {
      freq[ rating ] = 0;
   } // end for

   // summarize frequencies
   for ( j = 0; j < SIZE; ++j ) {
      ++freq[ answer[ j ] ];
   } // end for

   // output headers for result columns
   printf( "%s%11s%19s\n\n%54s\n%54s\n\n",
           "Response", "Frequency", "Histogram",
           "1    1    2    2", "5    0    5    0    5" );

   // output results
   for ( rating = 1; rating <= 9; ++rating ) {
      printf( "%8u%11u          ", rating, freq[ rating ] );

      // keep track of mode value and largest frequency value
      if ( freq[ rating ] > largest ) {                         
         largest = freq[ rating ];                              
         modeValue = rating;                                    
      } // end if                                            

      // output histogram bar representing frequency value
      for ( h = 1; h <= freq[ rating ]; ++h ) {
         printf( "%s", "*" );
      } // end inner for

      puts( "" ); // being new line of output
   } // end outer for

   // display the mode value
   printf( "\nThe mode is the most frequent value.\n"
           "For this run the mode is %u which occurred"
           " %u times.\n", modeValue, largest );
} // end function mode

// function that sorts an array with bubble sort algorithm
void bubbleSort( unsigned int a[] )
{
   unsigned int pass; // pass counter
   size_t j; // comparison counter
   unsigned int hold; // temporary location used to swap elements

   // loop to control number of passes
   for ( pass = 1; pass < SIZE; ++pass ) {

      // loop to control number of comparisons per pass
      for ( j = 0; j < SIZE - 1; ++j ) {

         // swap elements if out of order
         if ( a[ j ] > a[ j + 1 ] ) {
            hold = a[ j ];
            a[ j ] = a[ j + 1 ];
            a[ j + 1 ] = hold;
         } // end if
      } // end inner for
   } // end outer for
} // end function bubbleSort

// output array contents (20 values per row)
void printArray( const unsigned int a[] )
{
   size_t j; // counter

   // output array contents
   for ( j = 0; j < SIZE; ++j ) {

      if ( j % 20 == 0 ) { // begin new line every 20 values
         puts( "" );
      } // end if

      printf( "%2u", a[ j ] );
   } // end for
} // end function printArray

0 comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...