Menu
Coddy logo textTech

Powtórzenie — działania na prostokącie

Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 7 z 61.

challenge icon

Wyzwanie

Łatwy

Utwórz strukturę Rectangle z dwoma polami: width (u32) i height (u32).

Dodaj blok implementacji dla Rectangle zawierający:

  • new: funkcję skojarzoną, która przyjmuje width: u32 i height: u32, a następnie zwraca nowy Rectangle
  • area: przyjmuje &self i zwraca pole powierzchni jako u32
  • scale: przyjmuje &mut self i factor: u32, a następnie mnoży zarówno szerokość, jak i wysokość przez ten współczynnik

Otrzymasz trzy dane wejściowe:

  • Pierwszy wiersz: szerokość (u32)
  • Drugi wiersz: wysokość (u32)
  • Trzeci wiersz: współczynnik skalowania (u32)

Utwórz mutowalny Rectangle za pomocą Rectangle::new, używając podanych wymiarów. Wyświetl początkowe pole powierzchni, następnie przeskaluj prostokąt o podany współczynnik i wyświetl nowe pole powierzchni.

Oczekiwany format wyjścia:

{initial_area}
{scaled_area}

Spróbuj swoich sił

use std::io;

// TODO: Zdefiniuj tutaj strukturę Rectangle


// TODO: Dodaj blok implementacji dla Rectangle zawierający:
// - new: funkcja powiązana, która przyjmuje width i height oraz zwraca Rectangle
// - area: metoda, która przyjmuje &self i zwraca u32
// - scale: metoda, która przyjmuje &mut self oraz factor i mnoży width oraz height przez factor


fn main() {
    let mut input = String::new();
    
    // Wczytaj szerokość
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let width: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Wczytaj wysokość
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let height: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // Wczytaj współczynnik skalowania
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let factor: u32 = input.trim().parse().expect("Invalid number");
    
    // TODO: Utwórz modyfikowalny obiekt Rectangle za pomocą Rectangle::new
    
    // TODO: Wypisz początkowe pole powierzchni
    
    // TODO: Przeskaluj prostokąt, używając factor
    
    // TODO: Wypisz nowe pole powierzchni
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Rust online