ধরুন আমাদের একটি ফাংশন F(n) আছে যেমন F(n) =P – (0.006*n), যেখানে Pও দেওয়া আছে। পূর্ণসংখ্যা এবং একটি সংখ্যার একটি তালিকা দেওয়া হয়েছে। কাজটি হল প্রদত্ত তালিকা থেকে সংখ্যাটি খুঁজে বের করা, যার জন্য ফাংশনের মান 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