Решение на упр.02 задача 1 от Иван Коджабашев

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

Към профила на Иван Коджабашев

Резултати

  • 2 точки от тестове
  • 0 бонус точки
  • 2 точки общо
  • 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,
radiation_level
}
}
fn create_probe(name: &str, battery_percentage: u8, sensor_data: SensorData) -> Probe{
Probe
{
name: name.to_string(),
battery_percentage: battery_percentage.min(10),
last_reading: sensor_data,
status: String::from("Active")
}
}
fn diagnostic_check(probe: &Probe)
{
if probe.battery_percentage < 20
{
println!("niska bateriq {} e {}.", probe.name, probe.battery_percentage);
}else
{
println!("Diag {:?}", probe);
}
}
fn update_probe(probe: &mut Probe, new_status: &str)
{
probe.status = new_status.to_string();
}
fn recharge_probe(probe: &mut Probe, amount: u8) {
if amount > 100 - probe.battery_percentage {
probe.battery_percentage = 100;
} else {
probe.battery_percentage += amount;
}
}
fn analyze_critical_sensor(sensor: SensorData) {
if sensor.radiation_level > 100
|| sensor.temperature < -100.0
|| sensor.temperature > 100.0
{
println!("kritichno!!!!!");
println!("Temp: {}", sensor.temperature);
println!("Radiaciq: {}", sensor.radiation_level);
} else {
println!("ws tok");
}
}
fn main()
{
let sensor_data = create_sensor_data(135.0, 150);
let mut probe1 = create_probe(
"x",
15,
sensor_data,
);
diagnostic_check(&probe1);
recharge_probe(&mut probe1, 50);
update_status(&mut probe1, "Standby");
diagnostic_check(&probe1);
// Преместваме собствеността на last_reading
let reading = probe1.last_reading;
// Предаваме сензорните по стойност
analyze_critical_sensor(reading);
// Това вече не може
// diagnostic_check(&probe1);
// last_reading е преместено
// probe1 вече не е валиден понеже взехме стойността
// Но останалите полета могат да се използвт
println!("ime: {}", probe1.name);
println!("Pstatus: {}", probe1.status);
}
// Благодаря за отделеново време, тази година ще се ява на изпит!!!

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

Иван качи първо решение на 21.10.2026 18:45 (преди 7 дена)

Кодът няма да се компилира, защото в main се извиква update_status, а дефинираната функция е update_probe. Освен това в create_probe се използва battery_percentage.min(10), което неправилно ограничава батерията до 10% вместо да запази подадената стойност.