AzLearn

تمرين إعادة البناء

Unit Converter

أعد كتابة محول وحدات صغير للطول والوزن والحرارة.

rust ~13 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
use std::env;

fn main() {
    let args: Vec<String> = env::args().collect();
    if args.len() != 4 {
        println!("Usage: convert <value> <from> <to>");
        println!("Units: m, km, g, kg, c, f");
        return;
    }

    let value = args[1].parse::<f64>().unwrap_or(0.0);
    let from = args[2].as_str();
    let to = args[3].as_str();

    match convert(value, from, to) {
        Some(result) => println!("{value} {from} = {:.2} {to}", result),
        None => println!("Unsupported conversion"),
    }
}

fn convert(value: f64, from: &str, to: &str) -> Option<f64> {
    match (from, to) {
        ("m", "km") => Some(value / 1000.0),
        ("km", "m") => Some(value * 1000.0),
        ("g", "kg") => Some(value / 1000.0),
        ("kg", "g") => Some(value * 1000.0),
        ("c", "f") => Some(value * 9.0 / 5.0 + 32.0),
        ("f", "c") => Some((value - 32.0) * 5.0 / 9.0),
        (a, b) if a == b => Some(value),
        _ => None,
    }
}
اكتب هنا