Find a number out of a given Integer array. It can return the closest, smaller and larger number to the integer requested.
find_number.cpp@5:196eba643b4c, 2017-12-16 (annotated)
- Committer:
- O_Shovah
- Date:
- Sat Dec 16 12:39:00 2017 +0000
- Revision:
- 5:196eba643b4c
- Parent:
- 4:f24ae6c68f33
- Child:
- 6:4f4e609a6877
Smaller than and larger than give number functions working.; Return the array value if asked for the identical number.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
O_Shovah | 2:450e31ab4a55 | 1 | /** |
O_Shovah | 2:450e31ab4a55 | 2 | * Includes |
O_Shovah | 2:450e31ab4a55 | 3 | */ |
O_Shovah | 2:450e31ab4a55 | 4 | #include "find_number.h" |
O_Shovah | 2:450e31ab4a55 | 5 | |
O_Shovah | 2:450e31ab4a55 | 6 | |
O_Shovah | 2:450e31ab4a55 | 7 | |
O_Shovah | 2:450e31ab4a55 | 8 | find_number::find_number(int32_t *selectable_values, int32_t cells_in_array) |
O_Shovah | 2:450e31ab4a55 | 9 | { |
O_Shovah | 2:450e31ab4a55 | 10 | selectable_values_array = selectable_values; |
O_Shovah | 2:450e31ab4a55 | 11 | |
O_Shovah | 3:3cc233c5aa00 | 12 | searched_array_size = cells_in_array; |
O_Shovah | 2:450e31ab4a55 | 13 | } |
O_Shovah | 2:450e31ab4a55 | 14 | |
O_Shovah | 2:450e31ab4a55 | 15 | |
O_Shovah | 2:450e31ab4a55 | 16 | int32_t find_number::find_closest(int32_t target_value) |
O_Shovah | 2:450e31ab4a55 | 17 | { |
O_Shovah | 2:450e31ab4a55 | 18 | int32_t difference = abs( target_value - *selectable_values_array); |
O_Shovah | 2:450e31ab4a55 | 19 | int32_t closest_integer = selectable_values_array[0]; |
O_Shovah | 2:450e31ab4a55 | 20 | |
O_Shovah | 2:450e31ab4a55 | 21 | for (int32_t cell = 0; cell < searched_array_size; cell++) { |
O_Shovah | 2:450e31ab4a55 | 22 | if (difference > abs( target_value - selectable_values_array[cell] )) { |
O_Shovah | 2:450e31ab4a55 | 23 | difference = abs( target_value - selectable_values_array[cell]); |
O_Shovah | 2:450e31ab4a55 | 24 | closest_integer = selectable_values_array[cell]; |
O_Shovah | 2:450e31ab4a55 | 25 | } |
O_Shovah | 2:450e31ab4a55 | 26 | } |
O_Shovah | 2:450e31ab4a55 | 27 | return closest_integer; |
O_Shovah | 2:450e31ab4a55 | 28 | } |
O_Shovah | 2:450e31ab4a55 | 29 | |
O_Shovah | 2:450e31ab4a55 | 30 | int32_t find_number::find_larger(int32_t target_value) |
O_Shovah | 2:450e31ab4a55 | 31 | { |
O_Shovah | 4:f24ae6c68f33 | 32 | int32_t larger_integer = 0; |
O_Shovah | 4:f24ae6c68f33 | 33 | |
O_Shovah | 4:f24ae6c68f33 | 34 | for (int32_t cell=0; cell<searched_array_size; cell++) { |
O_Shovah | 4:f24ae6c68f33 | 35 | |
O_Shovah | 5:196eba643b4c | 36 | for (int32_t next_cell = cell+1; next_cell < searched_array_size; next_cell++) { |
O_Shovah | 4:f24ae6c68f33 | 37 | |
O_Shovah | 5:196eba643b4c | 38 | if (selectable_values_array[cell] <= target_value && target_value <= selectable_values_array[next_cell]) { |
O_Shovah | 4:f24ae6c68f33 | 39 | |
O_Shovah | 4:f24ae6c68f33 | 40 | larger_integer = selectable_values_array[next_cell]; |
O_Shovah | 5:196eba643b4c | 41 | |
O_Shovah | 5:196eba643b4c | 42 | if(selectable_values_array[next_cell] > larger_integer) larger_integer = selectable_values_array[next_cell]; |
O_Shovah | 5:196eba643b4c | 43 | |
O_Shovah | 5:196eba643b4c | 44 | if(selectable_values_array[cell] > larger_integer) larger_integer = selectable_values_array[cell]; |
O_Shovah | 5:196eba643b4c | 45 | |
O_Shovah | 5:196eba643b4c | 46 | if(selectable_values_array[cell] == target_value) larger_integer = selectable_values_array[cell]; |
O_Shovah | 5:196eba643b4c | 47 | |
O_Shovah | 5:196eba643b4c | 48 | if(selectable_values_array[next_cell] == target_value) larger_integer = selectable_values_array[next_cell]; |
O_Shovah | 5:196eba643b4c | 49 | |
O_Shovah | 4:f24ae6c68f33 | 50 | break; |
O_Shovah | 4:f24ae6c68f33 | 51 | } |
O_Shovah | 4:f24ae6c68f33 | 52 | } |
O_Shovah | 5:196eba643b4c | 53 | |
O_Shovah | 4:f24ae6c68f33 | 54 | } |
O_Shovah | 4:f24ae6c68f33 | 55 | return larger_integer; |
O_Shovah | 2:450e31ab4a55 | 56 | } |
O_Shovah | 2:450e31ab4a55 | 57 | |
O_Shovah | 4:f24ae6c68f33 | 58 | |
O_Shovah | 2:450e31ab4a55 | 59 | int32_t find_number::find_smaller(int32_t target_value) |
O_Shovah | 2:450e31ab4a55 | 60 | { |
O_Shovah | 4:f24ae6c68f33 | 61 | int32_t smaller_integer = 0; |
O_Shovah | 4:f24ae6c68f33 | 62 | |
O_Shovah | 4:f24ae6c68f33 | 63 | for (int32_t cell=0; cell<searched_array_size; cell++) { |
O_Shovah | 4:f24ae6c68f33 | 64 | |
O_Shovah | 5:196eba643b4c | 65 | for (int32_t next_cell = cell+1; next_cell < searched_array_size; next_cell++) { |
O_Shovah | 5:196eba643b4c | 66 | |
O_Shovah | 5:196eba643b4c | 67 | if (selectable_values_array[cell] <= target_value && target_value <= selectable_values_array[next_cell]) { |
O_Shovah | 4:f24ae6c68f33 | 68 | |
O_Shovah | 5:196eba643b4c | 69 | smaller_integer = selectable_values_array[cell]; |
O_Shovah | 5:196eba643b4c | 70 | |
O_Shovah | 5:196eba643b4c | 71 | if(selectable_values_array[cell] < smaller_integer ) smaller_integer = selectable_values_array[cell]; |
O_Shovah | 5:196eba643b4c | 72 | |
O_Shovah | 5:196eba643b4c | 73 | if(selectable_values_array[next_cell] < smaller_integer) smaller_integer = selectable_values_array[next_cell]; |
O_Shovah | 5:196eba643b4c | 74 | |
O_Shovah | 5:196eba643b4c | 75 | if(selectable_values_array[cell] == target_value) smaller_integer = selectable_values_array[cell]; |
O_Shovah | 4:f24ae6c68f33 | 76 | |
O_Shovah | 5:196eba643b4c | 77 | if(selectable_values_array[next_cell] == target_value) smaller_integer = selectable_values_array[next_cell]; |
O_Shovah | 5:196eba643b4c | 78 | |
O_Shovah | 4:f24ae6c68f33 | 79 | break; |
O_Shovah | 4:f24ae6c68f33 | 80 | } |
O_Shovah | 4:f24ae6c68f33 | 81 | } |
O_Shovah | 5:196eba643b4c | 82 | |
O_Shovah | 4:f24ae6c68f33 | 83 | } |
O_Shovah | 4:f24ae6c68f33 | 84 | return smaller_integer; |
O_Shovah | 2:450e31ab4a55 | 85 | } |