Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 목록에서 함수의 값이 C++에서 A에 가장 가까운 숫자 찾기

<시간/>

F(n) =P – (0.006*n)인 함수 F(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