从给定列表中查找数字,其功能值在C ++中最接近A

假设我们有一个函数F(n),使得F(n)= P –(0.006 * n),其中P也给定。给定一个整数列表和一个数字A。任务是从给定列表中查找数字,对于该数字,函数的值更接近于A。因此,如果P = 12,并且A = 5,则list将为{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

以上是 从给定列表中查找数字,其功能值在C ++中最接近A 的全部内容, 来源链接: utcz.com/z/341058.html

回到顶部