[M-15]
Write a function that searches for the value in an integer array
that is closest to a target value. Return the index of the element. If several
elements are equally close to the target, return the index of the first one.
Here is a testing program:
#include <stdio.h> #include <stdlib.h> /* Puzzle D25 -- find the element in an | array closest to a particular value */ int linearSearchClosest( int size, int arr[], int target ) { } int main() { const int SIZE = 10; int x[] = { -5, -3, 0, 6, 4, 16, -3, 0, 7, 9 }; int loc, target; char input[32]; printf("target:"); scanf("%s", input ); while ( strcmp( input, "q" ) != 0 ) { target = atoi( input ); loc = linearSearchClosest( x, SIZE, target ); printf("Closest element to %d found at index %d\n", target, loc ); printf("target:"); scanf("%s", input ); } return 0; }
Here is sample output of the testing program. The user enters a value for the target after the prompt:
-5 -3 0 6 4 16 -3 0 7 9 target:6 Closest element to 6 found at index 3 target:5 Closest element to 5 found at index 3 target:3 Closest element to 3 found at index 4 target:-9 Closest element to -9 found at index 0 target:23 Closest element to 23 found at index 5 target:0 Closest element to 0 found at index 2 target:q
The testing program allows the user to enter targets. The user enters "q" to end the program.