Find a number out of a given Integer array. It can return the closest, smaller and larger number to the integer requested.

Files at this revision

API Documentation at this revision

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