01/10/2018, 11:35

Tính tan 1 góc trong C++

Em chào mấy anh chị ạ,
Em vừa bắt đầu học lập trình C++ và em có bài tập viết chương trình tính tan 1 góc. Em đang bị vướng mắc ở chỗ khi tính tan thì các góc có giá trị thỏa pi/2 + k.pi thì tan của nó bị vô nghĩa, em không biết viết ctrình như thế nào để đưa điều kiện đó vào ạ.
Nếu em ko xét đến điều kiện đó thì khi chạy ctrình, tan(90) nó ra tiến về 0, như vậy thì có đúng ko ạ?
Mong mọi người giúp em, em cảm ơn trước ạ!

HK boy viết 13:38 ngày 01/10/2018

tan(90) nó ra tiến về 0

Sai.

lim(x -> pi / 2+, tan(x)) = - inf 
lim(x -> pi / 2-, tan(x)) = + inf 

các góc có giá trị thỏa pi/2 + k.pi thì tan của nó bị vô nghĩa

Kiểm tra xem có số nguyên k nào thoả mãn không. Lưu ý là so sánh 2 số thực không được dùng trực tiếp toán tử ==.

bool eq(float a, float b) {
    return abs(a - b) < eps; // nếu hiệu của a và b nhỏ hơn 1 số rất bé
                             // thì coi như chúng bằng nhau.
                             // Nên đặt eps = 1e-9.
}

float f_tan(float a) {
    float k = (a - pi / 2) / pi;
    if (eq(k, ceil(k)) && eq(k, floor(k))) // k nguyên -> ceil(k) == floor(k) = k
        return NaN; // không tồn tại
    else
        return tan(a);
}
Huỳnh Vy viết 13:43 ngày 01/10/2018

oh wow, dạ em cảm ơn anh ạ :"< em đang ngâm cứu :))

Bài liên quan
0