#include <iostream>
#include <stdlib.h>
uint8_t array[] = { 0, 64, 128, 192, 255 };
uint8_t findClosestMatch( uint8_t val )
{
uint8_t closest = 0;
for ( uint8_t i = 0; i < sizeof array / sizeof array[0]; i++ )
{
if ( abs( val - closest ) >= abs( val - array[i] ) )
closest = array[i];
}
return closest;
}
int main()
{
printf( "closest from 72 = %hhu\n", findClosestMatch( 72 ) );
printf( "closest from 142 = %hhu\n", findClosestMatch( 142 ) );
printf( "closest from 230 = %hhu\n", findClosestMatch( 230 ) );
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkbGliLmg+CiAKdWludDhfdCBhcnJheVtdID0geyAwLCA2NCwgMTI4LCAxOTIsIDI1NSB9OwogCnVpbnQ4X3QgZmluZENsb3Nlc3RNYXRjaCggdWludDhfdCB2YWwgKQp7CiAgdWludDhfdCBjbG9zZXN0ID0gMDsKICBmb3IgKCB1aW50OF90IGkgPSAwOyBpIDwgc2l6ZW9mIGFycmF5IC8gc2l6ZW9mIGFycmF5WzBdOyBpKysgKQogIHsKICAgIGlmICggYWJzKCB2YWwgLSBjbG9zZXN0ICkgPj0gYWJzKCB2YWwgLSBhcnJheVtpXSApICkKICAgICAgY2xvc2VzdCA9IGFycmF5W2ldOwogIH0KICByZXR1cm4gY2xvc2VzdDsKfQogCmludCBtYWluKCkKewoJcHJpbnRmKCAiY2xvc2VzdCBmcm9tIDcyICA9ICVoaHVcbiIsIGZpbmRDbG9zZXN0TWF0Y2goIDcyICkgKTsKCXByaW50ZiggImNsb3Nlc3QgZnJvbSAxNDIgPSAlaGh1XG4iLCBmaW5kQ2xvc2VzdE1hdGNoKCAxNDIgKSApOwoJcHJpbnRmKCAiY2xvc2VzdCBmcm9tIDIzMCA9ICVoaHVcbiIsIGZpbmRDbG9zZXN0TWF0Y2goIDIzMCApICk7CglyZXR1cm4gMDsKfQ==