Решение на упр.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
{
let sensor_data = SensorData { temperature: temperature, radiation_level: radiation_level, };
sensor_data
}
fn create_probe(name: &str, battery_percentage: u8, sensor_data: SensorData) -> Probe
{
let probe = Probe { name: name.to_string(), battery_percentage: battery_percentage, last_reading: sensor_data, status: "Standby".to_string(), };
probe
}
fn diagnostic_check(probe: &Probe)
{
if probe.battery_percentage < 20
{
println!("Low battery!");
}
else
{
println!("{:?}", probe);
}
}
fn recharge_probe(probe: &mut Probe, amount: u8)
{
if probe.battery_percentage + amount > 100
{
probe.battery_percentage = 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)
{
let mut temperature_status = "okay";
if sensor.temperature < -100.0
{
temperature_status = "low";
}
else if sensor.temperature > 100.0
{
temperature_status = "high";
}
let mut radiation_status = "okay";
if sensor.radiation_level > 100
{
radiation_status = "high";
}
println!("the temperature is {} and the radiation is {}", temperature_status, radiation_status);
}
fn main()
{
let sensor = create_sensor_data(30.0, 40);
let mut probe = create_probe("Voyager-X", 70, sensor);
diagnostic_check(&probe);
recharge_probe(&mut probe, 20);
update_status(&mut probe, "Exploring");
let reading = probe.last_reading;
analyze_critical_sensor(reading);
// Ако се пробваме да използваме probe отново може да се получи грешка, понеже ние прехвърлихме собствеността на данните за SensorData
// от last_reading на reading и полсе го прехвърлихме в функцията analyze_critical_sensor. Това значи че ние вече нямаме достъп до тези
// данни в main() функцията и ако се пробваме да ги достъпим ще се получи грешка.
}
