Charles Tritt
/
21_FuncSumEx_v5
main.cpp@116:518fcfbba05c, 2021-10-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |