Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:e9541fd79b08, 2013-05-24 (annotated)
- Committer:
- robt
- Date:
- Fri May 24 22:17:09 2013 +0000
- Revision:
- 0:e9541fd79b08
by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| robt | 0:e9541fd79b08 | 1 | /* Program Example 10.5: Pointers example for an array average function |
| robt | 0:e9541fd79b08 | 2 | */ |
| robt | 0:e9541fd79b08 | 3 | #include "mbed.h" |
| robt | 0:e9541fd79b08 | 4 | Serial pc(USBTX, USBRX); // setup serial comms |
| robt | 0:e9541fd79b08 | 5 | char data[]={5,7,5,8,9,1,7,8,2,5,1,4,6,2,1,4,3,8,7,9}; //define some input data |
| robt | 0:e9541fd79b08 | 6 | char *dataptr; // define a pointer for the input data |
| robt | 0:e9541fd79b08 | 7 | float average; // floating point average variable |
| robt | 0:e9541fd79b08 | 8 | |
| robt | 0:e9541fd79b08 | 9 | float CalculateAverage(char *ptr, char size); // function prototype |
| robt | 0:e9541fd79b08 | 10 | |
| robt | 0:e9541fd79b08 | 11 | int main() { |
| robt | 0:e9541fd79b08 | 12 | dataptr=&data[0]; // point pointer to address of the first array element |
| robt | 0:e9541fd79b08 | 13 | average = CalculateAverage(dataptr, sizeof(data)); // call function |
| robt | 0:e9541fd79b08 | 14 | pc.printf("\n\rdata = "); |
| robt | 0:e9541fd79b08 | 15 | for (char i=0; i<sizeof(data); i++) { // loop for each data value |
| robt | 0:e9541fd79b08 | 16 | pc.printf("%d ",data[i]); // display all the data values |
| robt | 0:e9541fd79b08 | 17 | } |
| robt | 0:e9541fd79b08 | 18 | pc.printf("\n\raverage = %.3f",average); // display average value |
| robt | 0:e9541fd79b08 | 19 | } |
| robt | 0:e9541fd79b08 | 20 | |
| robt | 0:e9541fd79b08 | 21 | // CalculateAverage function definition and code |
| robt | 0:e9541fd79b08 | 22 | float CalculateAverage(char *ptr, char size) { |
| robt | 0:e9541fd79b08 | 23 | int sum=0; // define variable for calculating the sum of the data |
| robt | 0:e9541fd79b08 | 24 | float mean; // define variable for floating point mean value |
| robt | 0:e9541fd79b08 | 25 | for (char i=0; i<size; i++) { |
| robt | 0:e9541fd79b08 | 26 | sum=sum + *(ptr+i); // add all data elements together |
| robt | 0:e9541fd79b08 | 27 | } |
| robt | 0:e9541fd79b08 | 28 | mean=(float)sum/size; // divide by size and cast to floating point |
| robt | 0:e9541fd79b08 | 29 | return mean; |
| robt | 0:e9541fd79b08 | 30 | } |