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

หาค่าเฉลี่ยเรขาคณิต (Geometric Means) N ค่า ระหว่าง A และ B ด้วย C++

สมมติว่าเรามีจำนวนเต็มสามจำนวน A, B และ N เราต้องหาค่าเฉลี่ยเรขาคณิต N ค่าระหว่าง A และ B ถ้า A = 2, B = 32, และ N = 3 ผลลัพธ์จะเป็น 4, 8, 16

งานนี้ง่าย เราต้องแทรก N จำนวนในลำดับเรขาคณิต (Geometric Progression) ที่ A และ B เป็นพจน์แรกและพจน์สุดท้ายของลำดับนั้น สมมติ G1, G2, ..., Gn เป็นค่าเฉลี่ยเรขาคณิต n ตัว ดังนั้นลำดับจะเป็น A, G1, G2, ..., Gn, B ดังนั้น B คือพจน์ที่ (N + 2) ของลำดับ ดังนั้นเราสามารถใช้สูตรเหล่านี้ -

$$B = A \times R^{N+1}$$

$$R^{N+1} = \frac{B}{A}$$

$$R = \left(\frac{B}{A}\right)^{\frac{1}{N+1}}$$

ตัวอย่างโค้ด

#include <iostream>
#include <cmath>
using namespace std;

void showMeans(int A, int B, int N) {
    float R = (float)pow(float(B / A), 1.0 / (float)(N + 1));
    for (int i = 1; i <= N; i++)
        cout << (A * pow(R, i)) << " ";
}

int main() {
    int A = 3, B = 81, N = 2;
    showMeans(A, B, N);
}

ผลลัพธ์

9 27