Menu
Coddy logo textTech

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

Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 7 из 61.

challenge icon

Задание

Легко

Создайте структуру Rectangle с двумя полями: width (u32) и height (u32).

Добавьте блок реализации для Rectangle со следующим содержимым:

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

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

  • Первая строка: ширина (u32)
  • Вторая строка: высота (u32)
  • Третья строка: коэффициент масштабирования (u32)

Создайте изменяемый объект Rectangle, используя Rectangle::new с заданными размерами. Выведите начальную площадь, затем масштабируйте прямоугольник на указанный коэффициент и выведите новую площадь.

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

{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();
    
    // Чтение ширины
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let width: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Чтение высоты
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let height: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Чтение коэффициента масштабирования
    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: Выведите новую площадь
}

Все уроки раздела Object Oriented Programming