Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: Vector 2D với add, sub, dot và length

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 5: Lập trình hướng đối tượng (1): lớp và đối tượng — khóa Lập trình Java

    Xây dựng lớp Vec2 biểu diễn vector 2 chiều.

    1. Lớp Vec2 gồm double x, y.
    2. Phương thức:
      • Vec2 add(Vec2 o) — cộng vector.
      • Vec2 sub(Vec2 o) — trừ vector.
      • double dot(Vec2 o) — tích vô hướng = x*o.x + y*o.y.
      • double length() — độ dài = sqrt(x*x + y*y).
      • String toString() trả (x, y) với mỗi số 2 chữ số thập phân, ví dụ (3.00, 4.00).
    3. Trong main, đọc Q. Mỗi dòng có x1 y1 x2 y2 <op> với op ∈ {ADD, SUB, DOT, LEN1, LEN2}.
      • ADD/SUB: in toString() của kết quả.
      • DOT: in dot product (2 chữ số thập phân).
      • LEN1: in length của vector 1 (2 chữ số thập phân).
      • LEN2: in length của vector 2.
    • Định dạng đầu vào:
      • Dòng 1: Q (1 ≤ Q ≤ 100)
      • Q dòng: x1 y1 x2 y2 <op>
    • Ràng buộc đầu vào:
      • |x|, |y| ≤ 10⁴
    • Định dạng đầu ra:

      Mỗi dòng kết quả tương ứng.

    Ví dụ:

    Đầu vào:

    4
    1 2 3 4 ADD
    5 6 1 1 SUB
    1 2 3 4 DOT
    3 4 0 0 LEN1
    

    Đầu ra:

    (4.00, 6.00)
    (4.00, 5.00)
    11.00
    5.00
    

    Giải thích:

    (1,2)+(3,4) = (4,6) → (4.00, 6.00). (5,6)-(1,1) = (4,5). dot = 1×3+2×4 = 11. length(3,4) = 5.00.

    Đầu vào:

    2
    0 0 0 0 LEN1
    3 4 5 12 LEN2
    

    Đầu ra:

    0.00
    13.00
    

    Giải thích:

    length(0,0) = 0. length(5,12) = sqrt(25+144) = sqrt(169) = 13.00.

    Đầu vào:

    1
    -3 -4 0 0 LEN1
    

    Đầu ra:

    5.00
    

    Đầu vào:

    3
    1 0 0 1 DOT
    2 3 4 5 ADD
    10 0 0 10 SUB
    

    Đầu ra:

    0.00
    (6.00, 8.00)
    (10.00, -10.00)
    

    Chủ đề

    🧩 Lập trình hướng đối tượng☕ JavaJavaJava: OOPTất cả môn học

    Đang tải editor...