Решение на упр.02 задача 1 от Симеон Георгиев
Към профила на Симеон Георгиев
Резултати
- 4 точки от тестове
- 0 бонус точки
- 4 точки общо
- 0 успешни тест(а)
- 0 неуспешни тест(а)
Код
#[derive(Debug)]
struct SensorData {
temperature: f64,
radiation_level: u32,
}
#[derive(Debug)]
struct Probe {
name: String,
battery_percentage: u8,
last_reading: SensorData,
status: String,
}
fn create_sensor_data(temperature: f64, radiation_level: u32) -> SensorData {
SensorData {
temperature: temperature,
radiation_level: radiation_level,
}
}
fn create_probe(name: &str, battery_percentage: u8, sensor_data: SensorData) -> Probe {
Probe {
name: name.to_string(),
battery_percentage: battery_percentage,
last_reading: create_sensor_data(sensor_data.temperature, sensor_data.radiation_level),
status: "Standby".to_string(),
}
}
fn diagnostic_check(probe: &Probe) {
if probe.battery_percentage < 20 {
println!("Low battery {:}", probe.name);
} else {
println!("{:?}", probe);
}
}
fn recharge_probe(probe: &mut Probe, amount: u8) {
probe.battery_percentage = if probe.battery_percentage + amount > 100 {
100
} else {
probe.battery_percentage + amount
}
}
fn update_status(probe: &mut Probe, new_status: &str) {
probe.status = new_status.to_string();
}
fn analyze_critical_sensor(sensor: SensorData) {
if sensor.radiation_level > 100 {
println!("critical radiation");
}
if sensor.temperature > 100.0 { // нз дали това е искал да каже автора с "екстремна температура"
println!("critical temperature");
}
}
fn main() {
let sensor_data = create_sensor_data(222.2, 110);
let probe1 = create_probe("Pesho", 5, sensor_data);
diagnostic_check(&probe1);
let mut probe2 = probe1;
let probe_ref = &mut probe2;
recharge_probe(probe_ref, 167);
update_status(probe_ref, "Exploring");
diagnostic_check(probe_ref);
let probe1 = probe2;
let reading = probe1.last_reading;
analyze_critical_sensor(reading);
// Полето last_reading на probe1 липсва защото owner-а му вече е reading.
// Ако SensorData derive-ваше Copy (може защото съдържа само полето които подържат Copy) можешe да не липсва.
}
