AzLearn

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

Temperature Converter

أعد كتابة محول درجات حرارة بين Celsius وFahrenheit وKelvin.

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

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

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

fn main() {
    let args: Vec<String> = env::args().collect();

    if args.len() != 4 {
        println!("Usage: {} <value> <from:c|f|k> <to:c|f|k>", args[0]);
        return;
    }

    // اقرأ الدرجة والوحدات — Read the value and units
    let value: f64 = match args[1].parse() {
        Ok(number) => number,
        Err(_) => {
            println!("Temperature must be a number");
            return;
        }
    };

    let from = args[2].to_lowercase();
    let to = args[3].to_lowercase();

    // حوّل أولاً إلى Celsius — Convert to Celsius first
    let celsius = match from.as_str() {
        "c" => value,
        "f" => (value - 32.0) * 5.0 / 9.0,
        "k" => value - 273.15,
        _ => {
            println!("Unknown source unit");
            return;
        }
    };

    // حوّل من Celsius إلى الهدف — Convert from Celsius to target
    let converted = match to.as_str() {
        "c" => celsius,
        "f" => celsius * 9.0 / 5.0 + 32.0,
        "k" => celsius + 273.15,
        _ => {
            println!("Unknown target unit");
            return;
        }
    };

    println!("{value:.2} {from} = {converted:.2} {to}");
}
اكتب هنا