Jens Schmelkus / find_number
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers find_number.cpp Source File

find_number.cpp

00001 /**
00002  * Includes
00003  */
00004 #include "find_number.h"
00005 
00006 
00007 
00008 find_number::find_number(int32_t *selectable_values, int32_t cells_in_array)
00009 {
00010     selectable_values_array = selectable_values;
00011 
00012     searched_array_size = cells_in_array;
00013 }
00014 
00015 find_number::find_number() {};
00016 
00017 
00018 
00019 int32_t find_number::find_closest(int32_t target_value)
00020 {
00021     int32_t difference = abs( target_value - selectable_values_array[0]);
00022     int32_t closest_integer = selectable_values_array[0];
00023 
00024     for (int32_t cell = 0; cell < searched_array_size; cell++) {
00025         if (difference > abs( target_value - selectable_values_array[cell] )) {
00026             difference = abs( target_value - selectable_values_array[cell]);
00027             closest_integer = selectable_values_array[cell];
00028         }
00029     }
00030     return closest_integer;
00031 }
00032 
00033 int32_t find_number::find_larger(int32_t target_value)
00034 {
00035     int32_t larger_integer = 0;
00036 
00037     for (int32_t cell=0; cell<searched_array_size; cell++) {
00038 
00039         for (int32_t next_cell = cell+1; next_cell < searched_array_size; next_cell++) {
00040 
00041             if (selectable_values_array[cell] <= target_value && target_value <= selectable_values_array[next_cell]) {
00042 
00043                 larger_integer = selectable_values_array[next_cell];
00044                 
00045                 if(selectable_values_array[next_cell] > larger_integer) larger_integer = selectable_values_array[next_cell];
00046                 
00047                 if(selectable_values_array[cell] > larger_integer) larger_integer = selectable_values_array[cell];
00048                 
00049                 if(selectable_values_array[cell] == target_value) larger_integer = selectable_values_array[cell];
00050 
00051                 if(selectable_values_array[next_cell] == target_value) larger_integer = selectable_values_array[next_cell];
00052 
00053                 break;
00054             }
00055             
00056             if(selectable_values_array[0] > target_value) larger_integer = selectable_values_array[0];
00057         }
00058 
00059     }
00060     return larger_integer;
00061 }
00062 
00063 
00064 int32_t find_number::find_smaller(int32_t target_value)
00065 {
00066     int32_t smaller_integer = 0;
00067 
00068     for (int32_t cell=0; cell<searched_array_size; cell++) {
00069 
00070         for (int32_t next_cell = cell+1; next_cell < searched_array_size; next_cell++) {
00071 
00072             if (selectable_values_array[cell] <= target_value && target_value <= selectable_values_array[next_cell]) {
00073 
00074                 smaller_integer = selectable_values_array[cell];
00075                 
00076                 if(selectable_values_array[cell] < smaller_integer ) smaller_integer = selectable_values_array[cell];
00077                 
00078                 if(selectable_values_array[next_cell] < smaller_integer) smaller_integer = selectable_values_array[next_cell];
00079                 
00080                 if(selectable_values_array[cell] == target_value) smaller_integer = selectable_values_array[cell];
00081 
00082                 if(selectable_values_array[next_cell] == target_value) smaller_integer = selectable_values_array[next_cell];
00083                 
00084                 break;
00085             }
00086         }
00087 
00088     }
00089     return smaller_integer;
00090 }