Решение на упр.02 задача 1 от Калоян Маринов

Обратно към всички решения

Към профила на Калоян Маринов

Резултати

  • 3 точки от тестове
  • 0 бонус точки
  • 3 точки общо
  • 0 успешни тест(а)
  • 0 неуспешни тест(а)

Код

struct SensorData {
temperature: f64,
radiation_level: u32
}
struct Probe {
name: String,
battery_percentage: u8,
last_reading: SensorData,
status: String
}
fn create_sensor_data(temperature: f64, radiation_level: u32) -> SensorData {
SensorData {
temperature,
radiation_level
}
}
fn create_probe(name: &str, battery_percentage: u8, sensor_data: SensorData) -> Probe {
Probe {
name: String::from(name),
battery_percentage,
last_reading: sensor_data,
status: String::from("Standby")
}
}
fn diagnostic_check(probe: &Probe) {
if probe.battery_percentage <= 20 {
println!("Battery low!");
} else {
println!("{:?}", probe.status);
}
}
fn recharge_probe(probe: &mut Probe, amount: u8) {
if probe.battery_percentage + amount > 100 {
println!("Battery cannot exceed 100%!");
} else {
probe.battery_percentage += amount
}
}
fn update_status(probe: &mut Probe, new_status: &str) {
probe.status = String::from(new_status)
}
fn analyze_critical_sensor(sensor: SensorData) {
if sensor.temperature > 100. {
println!("Extreme temperatures detected!")
}
if sensor.radiation_level > 100 {
println!("High radiation level detected!")
}
}
fn main() {
let data1 = create_sensor_data(150., 150);
let mut probe1 = create_probe("Pedal Intergalactic", 10, data1);
diagnostic_check(&probe1);
recharge_probe(&mut probe1, 50);
update_status(&mut probe1, "Exploring");
let reading = probe1.last_reading;
analyze_critical_sensor(reading);
// Полето last_reading на probe1 вече липсва, понеже
// rust използва move вместо copy, тоест не може една
// памет да се достъпва от две места.
}

История (1 версия и 1 коментар)

Калоян качи първо решение на 21.10.2026 19:29 (преди 7 дена)

В recharge_probe при надвишаване на 100% се извежда само съобщение, вместо батерията да се зададе на 100%, както се изисква. Освен това diagnostic_check проверява <= 20 вместо < 20 и извежда само статуса, а не цялата структура.