Bài 30.5. Quản Lý Đồ Họa 3D: Tính Tâm Khối Lượng - [Độ khó: Khá]


LÀM BÀI

Points: 10 (partial)
Time limit: 2.0s
Memory limit: 64M

Author:
Problem type

Bài 30.5. Quản Lý Đồ Họa 3D: Tính Tâm Khối Lượng - [Độ khó: Khá]

Trong lĩnh vực đồ họa 3D, các vật thể được tạo thành từ hàng nghìn điểm (vertices) trong không gian 3 chiều. Để thực hiện các phép toán như xoay hay di chuyển vật thể một cách mượt mà, người ta thường cần biết "tâm khối lượng" (center of mass) của vật thể đó. Tâm khối lượng được tính bằng cách lấy trung bình cộng các tọa độ (x, y, z) của tất cả các điểm. Bạn cần viết một chương trình để đọc các tọa độ điểm và tính tâm khối lượng của một vật thể, sử dụng cấu trúc và cấp phát bộ nhớ động.

INPUT FORMAT

Đầu vào gồm:

  • Dòng 1: Một số nguyên N (0 <= N <= 1000), là số lượng điểm (vertices) của vật thể.
  • N dòng tiếp theo: Mỗi dòng chứa ba số thực x y z, cách nhau bởi dấu cách, đại diện cho tọa độ của một điểm. Các tọa độ nằm trong khoảng [-1000.0, 1000.0].
OUTPUT FORMAT

Nếu N = 0, in ra: Khong co diem de tinh tam khoi luong. Nếu N > 0, đầu ra là một dòng chứa tọa độ x_avg y_avg z_avg của tâm khối lượng, mỗi tọa độ được in ra với 2 chữ số thập phân.

Ví dụ:

Input:

3
1.0 1.0 1.0
2.0 2.0 2.0
3.0 3.0 3.0

Output:

Tam khoi luong: 2.00 2.00 2.00

Giải thích:

  • Bạn cần định nghĩa một struct Point3D với ba thành viên x, y, z kiểu double.
  • Cấp phát động một mảng các Point3D (ví dụ: Point3D* vertices = new Point3D[N];) để lưu trữ N điểm.
  • Đọc N bộ tọa độ vào mảng động này.
  • Tính tổng các tọa độ x, y, z riêng biệt.
  • Chia tổng cho N để tìm giá trị trung bình (x_avg = sum_x / N, tương tự cho y_avg, z_avg).
  • Đảm bảo giải phóng bộ nhớ đã cấp phát động (delete[] vertices;).
  • Xử lý trường hợp N=0 để tránh chia cho 0.

Comments

There are no comments at the moment.

Zalo