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.
find_number.cpp
- Committer:
- O_Shovah
- Date:
- 2017-12-16
- Revision:
- 6:4f4e609a6877
- Parent:
- 5:196eba643b4c
- Child:
- 7:2b1e34741392
File content as of revision 6:4f4e609a6877:
/**
* Includes
*/
#include "find_number.h"
find_number::find_number(int32_t *selectable_values, int32_t cells_in_array)
{
selectable_values_array = selectable_values;
searched_array_size = cells_in_array;
}
int32_t find_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_number::find_larger(int32_t target_value)
{
int32_t larger_integer = 0;
for (int32_t cell=0; cell<searched_array_size; cell++) {
for (int32_t next_cell = cell+1; next_cell < searched_array_size; next_cell++) {
if (selectable_values_array[cell] <= target_value && target_value <= selectable_values_array[next_cell]) {
larger_integer = selectable_values_array[next_cell];
if(selectable_values_array[next_cell] > larger_integer) larger_integer = selectable_values_array[next_cell];
if(selectable_values_array[cell] > larger_integer) larger_integer = selectable_values_array[cell];
if(selectable_values_array[cell] == target_value) larger_integer = selectable_values_array[cell];
if(selectable_values_array[next_cell] == target_value) larger_integer = selectable_values_array[next_cell];
break;
}
if(selectable_values_array[0] > target_value) larger_integer = selectable_values_array[0];
}
}
return larger_integer;
}
int32_t find_number::find_smaller(int32_t target_value)
{
int32_t smaller_integer = 0;
for (int32_t cell=0; cell<searched_array_size; cell++) {
for (int32_t next_cell = cell+1; next_cell < searched_array_size; next_cell++) {
if (selectable_values_array[cell] <= target_value && target_value <= selectable_values_array[next_cell]) {
smaller_integer = selectable_values_array[cell];
if(selectable_values_array[cell] < smaller_integer ) smaller_integer = selectable_values_array[cell];
if(selectable_values_array[next_cell] < smaller_integer) smaller_integer = selectable_values_array[next_cell];
if(selectable_values_array[cell] == target_value) smaller_integer = selectable_values_array[cell];
if(selectable_values_array[next_cell] == target_value) smaller_integer = selectable_values_array[next_cell];
break;
}
}
}
return smaller_integer;
}