Find a number out of a given Integer array. It can return the closest, smaller and larger number to the integer requested.
Revision 0:7194f8b0c019, committed 2017-12-15
- Comitter:
- O_Shovah
- Date:
- Fri Dec 15 18:51:45 2017 +0000
- Child:
- 1:6dc9f01de60e
- Commit message:
- function complies but returns wrong size byte size of the array when the array is passed to the function. both sizeof return the 4 byte size of the pointer.
Changed in this revision
find_closest_number.cpp | Show annotated file Show diff for this revision Revisions of this file |
find_closest_number.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/find_closest_number.cpp Fri Dec 15 18:51:45 2017 +0000 @@ -0,0 +1,60 @@ +/** + * Includes + */ +#include "find_closest_number.h" + +Serial pc2(USBTX, USBRX); // tx, rx + + + +find_closest_number::find_closest_number(int32_t *selectable_values) //: selectable_values (selectable_values) +{ + + selectable_values_array = selectable_values; + +//searched_array_size = (sizeof( selectable_values ) / sizeof( selectable_values[0])); + //searched_array_size = (sizeof(selectable_values) / sizeof(*selectable_values)); + searched_array_size = sizeof( selectable_values ) / sizeof( selectable_values[0] ); + + pc2.printf("\n\r\n\r\n\r\n\r\n\r"); + + pc2.printf("searched_array_size is: \n\r"); + pc2.printf("%i \n\r",searched_array_size); + + pc2.printf("%i \n\r",sizeof( selectable_values )); + pc2.printf("%i \n\r",sizeof( selectable_values[0] )); + + pc2.printf("%i \n\r",selectable_values); + + for(int n = 0; n<8; n++) { + + pc2.printf("%i \n\r",*(selectable_values + n)); + + } + +} + + +int32_t find_closest_number::find_closest(int32_t target_value) +{ + int32_t difference = abs( target_value - *selectable_values_array); + int32_t closest_integer = selectable_values_array[0]; + + for (int32_t cell = 0; cell < searched_array_size; cell++) { + if (difference > abs( target_value - selectable_values_array[cell] )) { + difference = abs( target_value - selectable_values_array[cell]); + closest_integer = selectable_values_array[cell]; + } + } + return closest_integer; +} + +int32_t find_closest_number::find_larger(int32_t target_value) +{ + return 0; +} + +int32_t find_closest_number::find_smaller(int32_t target_value) +{ + return 0; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/find_closest_number.h Fri Dec 15 18:51:45 2017 +0000 @@ -0,0 +1,41 @@ +#ifndef find_closest_number_h +#define find_closest_number_h + +/** + * Includes + */ +#include "mbed.h" + +/** + * Defines + */ + + + +class find_closest_number +{ +public: + + /** + * Constructor. + */ + find_closest_number(int32_t *selectable_values); + + int32_t find_closest(int32_t target_value); + + int32_t find_larger(int32_t target_value); + + int32_t find_smaller(int32_t target_value); + +private: + + int32_t searched_array_size; + + int32_t *selectable_values_array; + + + + +}; + +#endif \ No newline at end of file