Trong bài viết này, chúng ta sẽ khám phá về hàm sqrt() trong lập trình c' class='hover-show-link replace-link-1748'>ngôn ngữ lập trình c ++. Hàm này được sử dụng rộng rãi để tính căn bậc hai của một số. Chúng ta sẽ tìm hiểu cú pháp và cách sử dụng hàm sqrt(), cũng như cách tính căn bậc hai của một số nếu không sử dụng hàm có sẵn.
I. Hàm sqrt() là gì?
Hàm sqrt() là một hàm có sẵn trong thư viện math của ngôn ngữ c+ +. Trước khi sử dụng hàm này, chúng ta cần khai báo thư viện math bằng cách sử dụng câu lệnh sau:
#include <math.h>
Hàm sqrt() được sử dụng để tính căn bậc hai của một số. Tham số truyền vào hàm là một số bất kỳ và giá trị trả về là căn bậc hai của số đó.
Cú pháp sử dụng hàm sqrt():
sqrt(x)
Trong đó, x là một số bất kỳ, có thể là số nguyên hoặc số thực.
II. Hàm Tính Căn Bậc 2 Trong C++
Bây giờ, chúng ta hãy xem cách sử dụng hàm sqrt() để tính căn bậc hai của một số trong C/C++.
// Code từ https://techacademy.edu.vn #include <stdio.h> #include <math.h> int main() { int x; printf("Nhập x: "); scanf("%d", &x); printf("Căn bậc hai của %d = %f\n", x, sqrt(x)); return 0; }
Chạy chương trình để kiểm tra kết quả:
Nhập x: 5 Căn bậc hai của 5 = 2.236068
Ngoài ra, nếu bạn muốn tính căn bậc hai của một số mà không sử dụng hàm sqrt(), bạn có thể sử dụng một phương pháp khác như sau:
Ý tưởng để tìm căn bậc hai là:
- Khai báo một giá trị epsilon để đặt sai số chấp nhận được. Vì căn bậc hai của một số có thể là một số thập phân vô hạn.
- Khởi tạo kết quả bằng 1.0.
- Nếu kết quả có sai số cao hơn epsilon, cập nhật lại kết quả theo công thức:
result = (number/result - result) / 2 + result;
- Thu hẹp dần giới hạn trên và giới hạn dưới của kết quả, lấy trung bình hiệu khoảng cách giới hạn đó để cập nhật kết quả. Điều này luôn đảm bảo rằng giới hạn trên dưới sẽ bị thu hẹp nhưng sẽ luôn bao bọc đáp án.
- Nếu kết quả có sai số nhỏ hơn epsilon, dừng lại và lấy kết quả đó làm giá trị đáp án.
Dưới đây là đoạn code đầy đủ để thực hiện ý tưởng này:
// Code từ https://techacademy.edu.vn #include <stdio.h> #include <math.h> #define EPSILON 0.0001f double mySqrt(int number) { double result = 1.0f; while (fabs(result * result - number) / number >= EPSILON) { result = (number / result - result) / 2 + result; } return result; } int main() { int x; printf("Nhập x: "); scanf("%d", &x); printf("Căn bậc hai của %d = %1.9f\n", x, mySqrt(x)); return 0; }
Và chạy thử xem sao:
Nhập x: 5 Căn bậc hai của 5 = 2.236068