Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาตัวเลขจากรายการที่กำหนดซึ่งค่าของฟังก์ชันที่ใกล้เคียงที่สุดกับ A ใน C++


สมมติว่าเรามีฟังก์ชัน F(n) ที่ F(n) =P – (0.006*n) โดยที่ P จะได้รับเช่นกัน ให้รายการจำนวนเต็มและตัวเลข A ภารกิจคือการค้นหาตัวเลขจากรายการที่กำหนดซึ่งค่าของฟังก์ชันนั้นอยู่ใกล้กับ A มากกว่า ดังนั้นหาก P =12 และ A =5 รายการจะเป็น {1000 , 2000} ดังนั้นเอาต์พุตจะเป็น 1,000 ดังนั้นหาก 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