Để tính trị tuyệt đối trong C/C++. Chúng ta có thể sử dụng hàm abs() để tính trị tuyệt đối với số nguyên. Và hàm fabs() để tính trị tuyệt đối cho số thực. Mình sẽ lấy ví dụ để các bạn dễ hiểu hơn nhé.
Trị tuyệt đối là gì?
Giá trị tuyệt đối(Absolute value) – còn thường được gọi là “mô-đun” – của một số thực x, viết là |x|, là giá trị của nó nhưng bỏ dấu. Như vậy |x| = -x nếu x là số âm, và |x| = x nếu x là số dương, và |0| =0.
Giá trị tuyệt đối của một số có thể hiểu là khoảng cách của số đó đến số 0.
Trong toán học, việc sử dụng giá trị tuyệt đối có trong hàng loạt hàm toán học, và còn được mở rộng cho các số phức, véctơ, trường,… liên hệ mật thiết với khái niệm giá trị.
Đồ thị của một hàm số có các biến số nằm trong dấu “giá trị tuyệt đối” thì luôn luôn nằm phía trên của trục hoành.
Mục sau cùng mình sẽ chỉ các bạn cách để tự viết hàm tính giá trị tuyệt đối nhé.
Tính trị tuyệt đối của số nguyên
Để tính trị tuyệt đối với số nguyên trong C/C++, ta sử dụng hàm abs() có cú pháp như sau:
int abs(int x)
Trong đó, x là số nguyên/ biến kiểu nguyên cần lấy giá trị tuyệt đối.
Đây là một ví dụ tính trị tuyệt đối sử dụng abs():
#include <stdio.h> #include <stdlib.h> int main () { int a, b; a = abs(10); printf("Gia tri cua a = %dn", a); b = abs(-11); printf("Gia tri cua b = %dn", b); return(0); }
Kết quả:
Gia tri cua a = 10 Gia tri cua b = 11
Tính giá trị tuyệt đối của số thực
Để tính trị tuyệt đối của số thực, ta sử dụng hàm fabs() có cú pháp như sau:
double fabs (double x);
Trong đó x là một số thực mà bạn cần tính trị tuyệt đối. Bạn nhớ #include <math.h>
nhé.
Ví dụ sử dụng hàm fabs():
#include <stdio.h> #include <math.h> int main () { double a, b; a = fabs(10.5); printf("Gia tri cua a = %fn", a); b = fabs(-11.2); printf("Gia tri cua b = %fn", b); return(0); }
Kết quả chạy:
Gia tri cua a = 10.500000 Gia tri cua b = 11.200000
Tự viết hàm tính giá trị tuyệt đối
Ở đây, chúng ta sẽ sử dụng template trong C++ để viết 1 hàm chạy được cho cả số nguyên và số thực nhé.
#include <stdio.h> #include <math.h> template <typename T> T abs_nguyenvanhieu(T a){ if(a >= 0) return a; else return a * (-1); } int main () { int a = -5; float b = -9; printf("abs(%d) = %dn", a, abs_nguyenvanhieu<int>(a)); printf("abs(%f) = %f", b, abs_nguyenvanhieu<float>(b)); }
Kết quả chạy:
abs(-5) = 5 abs(-9.000000) = 9.000000
Để lại một bình luận