Menu
CoddyTech

Ôn tập: thao tác với hình chữ nhật

Thuộc phần Lập trình hướng đối tượng trong hành trình Rust của Coddy. Bài học 7 trên 61.

challenge icon

Thử thách

Dễ

Tạo một struct Rectangle với hai trường: width (u32) và height (u32).

Thêm một khối triển khai cho Rectangle với các mục sau:

  • new: một hàm liên kết nhận width: u32 và height: u32, rồi trả về một Rectangle mới
  • area: nhận &self và trả về diện tích dưới dạng u32
  • scale: nhận &mut self và một factor: u32, nhân cả chiều rộng và chiều cao với hệ số đó

Bạn sẽ nhận ba đầu vào:

  • Dòng đầu tiên: chiều rộng (u32)
  • Dòng thứ hai: chiều cao (u32)
  • Dòng thứ ba: hệ số tỉ lệ (u32)

Tạo một Rectangle có thể thay đổi bằng Rectangle::new với các kích thước đã cho. In ra diện tích ban đầu, sau đó nhân kích thước hình chữ nhật với hệ số đã cho và in ra diện tích mới.

Định dạng đầu ra mong đợi:

{initial_area}
{scaled_area}

Tự làm thử

use std::io;

// TODO: Định nghĩa struct Rectangle tại đây


// TODO: Thêm khối triển khai cho Rectangle gồm:
// - new: hàm liên kết nhận width và height, trả về Rectangle
// - area: phương thức nhận &self, trả về u32
// - scale: phương thức nhận &mut self và factor, nhân width và height với factor


fn main() {
    let mut input = String::new();
    
    // Đọc width
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let width: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Đọc height
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let height: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Đọc factor dùng để thay đổi kích thước
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let factor: u32 = input.trim().parse().expect("Invalid number");
    
    // TODO: Tạo một Rectangle có thể thay đổi bằng Rectangle::new
    
    // TODO: In ra diện tích ban đầu
    
    // TODO: Nhân kích thước hình chữ nhật với factor
    
    // TODO: In ra diện tích mới
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Rust online