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

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

สมมติว่ามีฟังก์ชัน 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