Решение на упр.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: sensor_data, status: "Standby".to_string() }
}
fn diagnostic_check(probe: &Probe) {
if probe.battery_percentage < 20 {
println!("Critical battery level!");
}
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_error(sensor: SensorData) {
if sensor.radiation_level > 100 || sensor.temperature > 100.0 {
println!("Alarm!");
}
}
fn main() {
let sensor_data: SensorData = create_sensor_data(25.0, 13);
let mut probe: Probe = create_probe("Voyager", 67, sensor_data);
diagnostic_check(&probe);
recharge_probe(&mut probe, 20);
update_status(&mut probe, "Exploring");
let reading = probe.last_reading;
analyze_critical_error(reading);
//Следния ред ще изведе грешка, поради преместенето на probe.last_reading в reading
// (reading "краде" информацията от probe.last_reading и не оставя нищо в нея)
// println!("{:?}", probe.last_reading);
}

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

Александър качи първо решение на 22.10.2026 18:35 (преди 5 дена)