Menu
Coddy logo textTech

まとめ:Rectangle の操作

CoddyのRustジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 7/61。

challenge icon

チャレンジ

簡単

2つのフィールド、width (u32) と height (u32) を持つ Rectangle structを作成してください。

Rectangle の実装ブロックを次のように追加してください。

  • new: width: u32height: u32 を受け取り、新しい Rectangle を返す associated function
  • area: &self を受け取り、面積を u32 として返す
  • scale: &mut selffactor: u32 を受け取り、width と height の両方に factor を掛ける

3つの入力を受け取ります。

  • 1行目: width (u32)
  • 2行目: height (u32)
  • 3行目: scale factor (u32)

指定された寸法を使って Rectangle::new で mutable な Rectangle を作成してください。initial area を出力し、その後 rectangle を指定された factor で scale して、新しい 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();
    
    // 幅を読み取る
    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::new を使って可変の Rectangle を作成する
    
    // TODO: 初期の面積を出力する
    
    // TODO: factor で長方形をスケールする
    
    // TODO: 新しい面積を出力する
}

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ