#include <iostream>
#include <cstdlib>
#include <ctime>

int dist(int a, int b)
{
    return std::abs(b-a) ;
}

unsigned getClosest( int* nums, unsigned nNums, int target )
{
    unsigned indexOfClosest = 0 ;

    unsigned index = 1 ;
    while ( index < nNums )
    {
        if ( dist(nums[index], target) < dist(nums[indexOfClosest], target) )
            indexOfClosest = index ;

        ++index ;
    }

    return indexOfClosest ;
}

void displayClosest(int* nums, unsigned nNums, int target)
{
    std::cout << "{ " ;
    for ( unsigned i=0; i<nNums; ++i )
        std::cout << nums[i] << ' ' ;
    std::cout << "}\n" ;

    unsigned index = getClosest(nums, nNums, target) ;
    std::cout << "The closest number to " << target << " is " ;
    std::cout << nums[index] << " at index " << index << ".\n" ;
}

int main()
{
    std::srand(std::time(0)) ;

    const unsigned array_size = 3 ;
    int array[array_size] = { std::rand() % 20, std::rand() % 20, std::rand() % 20 } ;
    for ( unsigned i=1; i<21; i+=2 )
        displayClosest(array, array_size, i) ;
}