Tính Tổng Các Giá Trị đối Xứng Trong Mảng Gồm Các Số Nguyên.

Bài toán: Hãy tính tổng các giá trị đối xứng trong mảng gồm các số nguyên.

Để làm được bài toán trên thì trước hết chúng ta phải hiểu số tự đối xứng là số như thế nào ?

  1. Khái niệm số tự đối xứng
  2. Tính tổng các giá trị đối xứng trong mảng
    1. Xây dựng hàm kiểm tra số đối xứng
    2. Code tham khảo

Khái niệm số tự đối xứng

Một số được gọi là tự đối xứng nếu chúng ta đọc theo chiều từ trái sang phải và ngược lại đều giống nhau.

Ví dụ:

  • Số 1221, 131 được gọi là số đối xứng vì nếu đọc từ trái sang phải hay ngược lại đều giống nhau.
  • Số 132 không phải là số đối xứng vì đọc từ trái sang phải là 132 còn đọc từ phải sang trái lại là 231.

Như vậy từ khái niệm trên ta có thể bắt đầu đi giải quyết bài toán rồi phải không nào.

Tính tổng các giá trị đối xứng trong mảng

Để giải quyết bài toán trên thì chúng ta bắt buộc phải xây dựng một hàm kiểm tra xem số đó có phải là số đối xứng không.

Xây dựng hàm kiểm tra số đối xứng

Với khái niệm ở trên thì chúng ta có thể kiểm tra một số có phải là số đối xứng bằng cách như sau:

  • Tìm số đảo ngược của chính nó.
  • Nếu số đảo ngược bằng chính nó thì ta kết luận đó chính là số đối xứng.

Ví dụ:

Số đảo ngược của 1221 cũng là 1221, vậy ta có thể kết luận 1221 là số đối xứng.

Số đảo ngược của 132 là 231 nên 132 không phải là số đối xứng.

Nếu bạn chưa biết cách tìm số đảo ngược thì có thể xem tại đây.

Code tham khảo

Code c++

#include<iostream> using namespace std; int daoNguoc(int number) { int res = 0; while (number > 0) { res = res * 10 + number % 10; number /= 10; } return res; } bool isCheck(int number) { if (number == daoNguoc(number)) return true; return false; /* return (number == daoNguoc(number)); */ } void nhap(int a[], int n) { for (int i = 0; i < n; i++) { cout << "Nhap a[" << i << "]: "; cin >> a[i]; } cout << endl; } int main() { int n, a[100]; int sum = 0; cout << "Nhap n: "; cin >> n; nhap(a, n); for (int i = 0; i < n; i++) if (isCheck(a[i])) sum += a[i]; cout << "Sum: " << sum; return 0; }Nhap n: 4 Nhap a[0]: 12 Nhap a[1]: 121 Nhap a[2]: 1 Nhap a[3]: 13 Sum: 122

Ở trên có hai số đối xứng đó là 1 và 121.

 

Code c

#include<stdio.h> int daoNguoc(int number) { int res = 0; while (number > 0) { res = res * 10 + number % 10; number /= 10; } return res; } bool isCheck(int number) { if (number == daoNguoc(number)) return true; return false; /* return (number == daoNguoc(number)); */ } void nhap(int a[], int n) { for (int i = 0; i < n; i++) { printf("Nhap a[%d]: ", i); scanf_s("%d", &a[i]); } printf("n"); } int main() { int n, a[100]; int sum = 0; printf("Nhap n: "); scanf_s("%d", &n); nhap(a, n); for (int i = 0; i < n; i++) if (isCheck(a[i])) sum += a[i]; printf("Sum: %d", sum); return 0; } Nhap n: 4 Nhap a[0]: 121 Nhap a[1]: 131 Nhap a[2]: 15 Nhap a[3]: 78 Sum: 252

 

Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !

 

Từ khóa » Chuỗi đối Xứng Trong C++