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 ạ! 
Tính tan 1 góc trong C++
Sai.
lim(x -> pi / 2+, tan(x)) = - inf
lim(x -> pi / 2-, tan(x)) = + inf
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);
}
1 Like
oh wow, dạ em cảm ơn anh ạ :"< em đang ngâm cứu :))
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?