Menu
Coddy logo textTech

Итоги: действия с Rectangle

Часть раздела Объектно-ориентированное программирование путешествия по Rust на Coddy. Урок 7 из 61.

challenge icon

Задание

Легко

Create структуру Rectangle с двумя полями: width (u32) и height (u32).

Add блок implementation для Rectangle со следующим содержимым:

  • new: associated function, которая takes width: u32 и height: u32 и returns новый Rectangle
  • area: takes &self и returns площадь как u32
  • scale: takes &mut self и factor: u32, multiplies и width, и height на factor

Ты получишь три входных значения:

  • Первая строка: width (u32)
  • Вторая строка: height (u32)
  • Третья строка: scale factor (u32)

Create изменяемый Rectangle с использованием Rectangle::new и заданных размеров. Выведи initial area, затем увеличь rectangle с помощью заданного factor и выведи новую area.

Ожидаемый формат вывода:

{initial_area}
{scaled_area}

Попробуйте сами

use std::io;

// TODO: Определите структуру Rectangle здесь


// TODO: Добавьте блок реализации для Rectangle с:
// - new: ассоциированная функция, которая принимает width и height, возвращает Rectangle
// - area: метод, который принимает &self, возвращает u32
// - scale: метод, который принимает &mut self и factor, умножает width и height


fn main() {
    let mut input = String::new();
    
    // Прочитать width
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let width: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Прочитать height
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let height: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Прочитать scale factor
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let factor: u32 = input.trim().parse().expect("Invalid number");
    
    // TODO: Создайте изменяемый Rectangle с помощью Rectangle::new
    
    // TODO: Выведите начальную площадь
    
    // TODO: Масштабируйте прямоугольник на factor
    
    // TODO: Выведите новую площадь
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Rust