मान लीजिए हमारे पास एक फ़ंक्शन F(n) है जैसे कि F(n) = P - (0.006*n), जहां P भी दिया गया है। पूर्णांकों की एक सूची और एक संख्या A दी गई है। कार्य सूची से वह संख्या खोजना है, जिसके लिए फ़ंक्शन का मान A के निकटतम है। तो यदि P = 12, और A = 5, तो सूची {1000, 2000} होगी। तो आउटपुट 1000 होगा। तो यदि P = 12 और A = 5, तो 1000 के लिए, F(1000) = 12 - (0.006 * 1000) = 6 और 2000 के लिए, F(2000) = 12 - (0.006 * 2000) = 0, चूंकि 5 के निकटतम मान 6 है, इसलिए उसे लिया जाता है।
सूची में प्रत्येक मान के माध्यम से पुनरावृति करें, और प्रत्येक मान के लिए F(n) खोजें। अब F(n) के प्रत्येक मान और A के निरपेक्ष अंतर की तुलना करें और n का मान, जिसके लिए निरपेक्ष अंतर न्यूनतम है, उत्तर होगा।
उदाहरण
#include <iostream>
#include <cmath>
using namespace std;
int nearestValue(int P, int A, int N, int arr[]) {
int ans = -1;
float temp = (float)INFINITY;
for (int i = 0; i < N; i++) {
float term = P - arr[i] * 0.006;
if (abs(term - A) < temp) {
temp = abs(term - A);
ans = i;
}
}
return arr[ans];
}
int main() {
int P = 12, A = 5;
int array[] = {1000, 2000, 1001};
int N = sizeof(array) / sizeof(array[0]);
cout << "Nearest value is: " << nearestValue(P, A, N, array) << endl;
}
आउटपुट
Nearest value is: 1001