//========================================================================= #define PROGRAMMER "BAHN, William" #define PROG_CODE "bahw" #define COURSE "ECE-1021" #define YEAR (2003) #define TERM "Fall" #define SECTION (0) #define ASSIGNMENT "RWA 3.5" #define REVISION (0) #define TITLE "Real World Application from Section 3.5" #define SUBTITLE "Statistical Measures" #define EMAIL "wbahn@eas.uccs.edu" #define FILENAME "rwa0305.c" //========================================================================= // PROBLEM: // // The enteres a string of floating point values and the following // statistical measures are computed and displayed: // // number of values // maximum value // minimum value // sum of all values // mean of all values // variance // std deviation // // PSEUDOCODE // 1) GET: Value // 2) IF: User entered EOF // 2.1) PUT: Program Termination Message to screen. // 2.2) EXIT program // 3) REM: Initialize values // 3.1) SET: NumberofValues = 1 // 3.2) SET: MinValue = Value // 3.3) SET: MaxValue = Value // 3.4) SET: Sum = Value // 3.5) SET: Variance = 0 // 4) LOOP: Until the user enters ^Z. // 4.1) SET: Increment NumberOfValues // 4.2) SET: Sum = Sum + Value // 4.3) IF: MinValue > Value // 4.3.1) MinValue = Value // 4.4) IF: MaxValue < Value // 4.4.1) MaxValue = Value // 4.5) SET: variance = variance + (value^2) // 5) REM: Calculate Variance // 5.1) SET: mean = sum / NumberOfValues // 5.2) SET: variance = variance / NumberOfValues // 5.3) SET: variance = variance - (mean^2) // 6) StdDev = sqrt(variance) // 7) PUT: All statistical measures to screen. // 8) PUT: Program Termination Message to screen. // 9) EXIT program //== INCLUDE FILES ======================================================== #include // printf(), scanf(), EOF #include // sqrt() //== FUNCTION PROTOTYPES ================================================== void PrintHeader(void); //== MAIN FUNCTION ======================================================== int main(void) { int num; double value; double min, max, mean, sum, var, sdev; PrintHeader(); printf("\n"); // Print a blank line printf("Enter Ctlr-Z to quit.\n"); printf("\n"); // Print a blank line // 1) GET: Value // 2) IF: User entered EOF // 2.1) PUT: Program Termination Message to screen. // 2.2) EXIT program printf("Enter the data values: "); if(EOF == scanf("%lf", &value)) { printf("\n"); // Carriage Return for input line after ^Z is entered. printf("No Data Entered - Program Terminated!\n"); return(1); } // 3) REM: Initialize values // 3.1) SET: NumberofValues = 1 // 3.2) SET: MinValue = Value // 3.3) SET: MaxValue = Value // 3.4) SET: Sum = Value // 3.5) SET: Variance = 0 num = 1; min = value; max = value; sum = value; var = value * value; // 4) LOOP: Until the user enters ^Z. // 4.1) SET: Increment NumberOfValues // 4.2) SET: Sum = Sum + Value // 4.3) IF: MinValue > Value // 4.3.1) MinValue = Value // 4.4) IF: MaxValue < Value // 4.4.1) MaxValue = Value // 4.5) SET: variance = variance + (value^2) while(EOF != scanf("%lf", &value)) { num++; sum += value; if(min > value) min = value; if(max < value) max = value; var += value * value; } // 5) REM: Calculate Variance // 5.1) SET: mean = sum / NumberOfValues // 5.2) SET: variance = variance / NumberOfValues // 5.3) SET: variance = variance - (mean^2) mean = sum / num; var /= num; var -= mean * mean; // 6) StdDev = sqrt(variance) sdev = sqrt(var); // 7) PUT: All statistical measures to screen. printf("\n"); // Carriage Return for input line after ^Z is entered. printf("\n"); // Print a blank line printf("STATISTICAL SUMMARY OF DATA\n"); printf("Number of Data Values : %i\n", num); printf("Minimum Value = %f\n", min); printf("Maximun Value = %f\n", max); printf("Mean Value = %f\n", mean); printf("Sum of Values = %f\n", sum); printf("Variance = %f\n", var); printf("Standard Deviatoin = %f\n", sdev); // 8) PUT: Program Termination Message to screen. // 9) EXIT program printf("\n"); // Print a blank line printf("PROGRAM TERMINATED BY USER\n"); return(0); } //== SUPPORT FUNCTIONS ==================================================== void PrintHeader(void) { printf("========================================" "=======================================\n"); printf("Course....... %s-%i (%s %i)\n", COURSE, SECTION, TERM, YEAR); printf("Programmer... %s (%s)\n", PROGRAMMER, PROG_CODE); printf("Assignment... %s (Rev %i) (Source Code in %s)\n", ASSIGNMENT, REVISION, FILENAME); printf("Description.. %s\n", TITLE); printf(" %s\n", SUBTITLE); printf("========================================" "=======================================\n"); return; }