Committer:
CSTritt
Date:
Thu Oct 14 15:11:03 2021 +0000
Revision:
116:518fcfbba05c
Parent:
115:f22cbbc92bae
Child:
117:b40379408898
Switched to Mbed v.5 with no changes (yet).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CSTritt 107:61b9c99a4e27 1 /*
CSTritt 116:518fcfbba05c 2 Program 8.3 Calculating an average using functions.
CSTritt 116:518fcfbba05c 3 from Horton's Beginning C, 5th ed.
CSTritt 114:1cfad1babb55 4
CSTritt 116:518fcfbba05c 5 Note isolation of user input in main and a single function.
CSTritt 114:1cfad1babb55 6
CSTritt 116:518fcfbba05c 7 Ported to mbed by C. S. Tritt
CSTritt 116:518fcfbba05c 8 Last revised: 10/5/17 (v. 1.1)
CSTritt 107:61b9c99a4e27 9 */
Jonathan Austin 0:2757d7abb7d9 10 #include "mbed.h"
CSTritt 108:eee3167b25b4 11
CSTritt 116:518fcfbba05c 12 const int MAX_COUNT=10; // Set input limit. Protects against buffer overrun.
CSTritt 116:518fcfbba05c 13
CSTritt 116:518fcfbba05c 14 // Function prototypes...
CSTritt 116:518fcfbba05c 15 float Sum(float x[], int size); // Sums the values in a float array.
CSTritt 116:518fcfbba05c 16 float Average(float x[], int size); // Averages the values in a float array.
CSTritt 116:518fcfbba05c 17 int GetData(float *data, int max_count); // Gets data from std Serial.
CSTritt 116:518fcfbba05c 18
CSTritt 116:518fcfbba05c 19 // main program - execution starts here.
CSTritt 116:518fcfbba05c 20 int main(void) {
CSTritt 116:518fcfbba05c 21 float samples[MAX_COUNT] = {0.0}; // Create array for samples.
CSTritt 116:518fcfbba05c 22 int sampleCount = GetData(samples, MAX_COUNT); // Get values.
CSTritt 116:518fcfbba05c 23 float average = Average(samples, sampleCount); // Find average.
CSTritt 116:518fcfbba05c 24 // Display results.
CSTritt 116:518fcfbba05c 25 printf("The average of the values you entered is: %.2f.\n", average);
CSTritt 116:518fcfbba05c 26 return 0;
CSTritt 116:518fcfbba05c 27 }
CSTritt 116:518fcfbba05c 28
CSTritt 116:518fcfbba05c 29 // Function to calculate the sum of array elements. n is the number of elements
CSTritt 116:518fcfbba05c 30 // in array x.
CSTritt 116:518fcfbba05c 31 float Sum(float x[], int size) {
CSTritt 116:518fcfbba05c 32 float sum = 0.0;
CSTritt 116:518fcfbba05c 33 for(int i = 0 ; i < size ; ++i) sum += x[i];
CSTritt 116:518fcfbba05c 34 return sum;
CSTritt 116:518fcfbba05c 35 }
CSTritt 111:956b1c606b66 36
CSTritt 116:518fcfbba05c 37 // Function to calculate the average of array elements. Calls Sum.
CSTritt 116:518fcfbba05c 38 float Average(float x[], int size) {
CSTritt 116:518fcfbba05c 39 return Sum(x, size)/size;
CSTritt 116:518fcfbba05c 40 }
CSTritt 111:956b1c606b66 41
CSTritt 116:518fcfbba05c 42 // Function to read in data items and store in data array. The function returns
CSTritt 116:518fcfbba05c 43 // the number of items stored.
CSTritt 116:518fcfbba05c 44 int GetData(float *data, int max_size) {
CSTritt 116:518fcfbba05c 45 int nValues = 0;
CSTritt 116:518fcfbba05c 46 // Clear screen & move cursor to upper left ANSI/VT100 sequence.
CSTritt 116:518fcfbba05c 47 const char ESC=27; printf("%c[2J", ESC); printf("%c[H", ESC);
CSTritt 116:518fcfbba05c 48 printf("Assure Local Echo is activated!\n");
CSTritt 116:518fcfbba05c 49 printf("Number of values to average (Maximum %d)? ", max_size);
CSTritt 116:518fcfbba05c 50 scanf("%d", &nValues);
CSTritt 116:518fcfbba05c 51 printf("%d was read.\n", nValues); // added by cst.
CSTritt 116:518fcfbba05c 52 if(nValues > max_size) {
CSTritt 116:518fcfbba05c 53 printf("Maximum count exceeded. %d items will be read.", max_size);
CSTritt 116:518fcfbba05c 54 nValues = max_size;
CSTritt 108:eee3167b25b4 55 }
CSTritt 116:518fcfbba05c 56 printf("Enter values:\n");
CSTritt 116:518fcfbba05c 57 for( int i = 0 ; i < nValues ; ++i) {
CSTritt 116:518fcfbba05c 58 scanf("%f", &data[i]);
CSTritt 116:518fcfbba05c 59 printf("%f was read.\n", data[i]); // added by cst.
CSTritt 116:518fcfbba05c 60 }
CSTritt 116:518fcfbba05c 61 return nValues;
CSTritt 113:cc5beacdad5a 62 }