Решение на упр.02 задача 1 от Орлин Грънчаров

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

Към профила на Орлин Грънчаров

Резултати

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

Код

struct SensorData {
temperature : f64,
radiation_level : u32,
}
fn signal_sensor_data(data : &SensorData) {
println!("Temperature: {}\nRads: {}", data.temperature, data.radiation_level);
}
struct Probe {
name : String,
battery_precentage : u8,
last_reading : SensorData,
status : String,
}
fn signal_probe_data(prob : &Probe) {
println!("Name: {}\nBattery: {}", prob.name, prob.battery_precentage);
signal_sensor_data(&prob.last_reading);
println!("Satus: {}", prob.status);
}
fn create_sensor_data(temperature : f64, radiation_level : u32) -> SensorData {
SensorData {
temperature,
radiation_level,
}
}
fn create_probe(name : &str, battery_precentage : u8, sensor_data : SensorData) -> Probe {
Probe {
name : String::from(name),
battery_precentage,
last_reading : sensor_data,
status : String::from("chill"),
}
}
fn diagnostic_check(probe : &Probe) {
if probe.battery_precentage < 20 {
println!("Noa bttery");
} else {
signal_probe_data(probe);
}
}
fn recharge_probe(probe : &mut Probe, ammount : u8) {
probe.battery_precentage =
if probe.battery_precentage + ammount > 100 {
100
} else {
probe.battery_precentage + ammount
};
}
fn update_status(probe : &mut Probe, new_status : &str) {
probe.status = String::from(new_status);
}
fn analyze_critical_sensor(sensor : SensorData) {
let mut flag : bool = false;
if sensor.radiation_level > 100 {
println!("Radioactive\n");
flag = true;
}
if sensor.temperature > 150.0 {
println!("Too hot🤤\n");
flag = true;
}
if !flag {
println!("It's chill\n");
}
}
fn main() {
let snes = create_sensor_data((67) as f64, 24);
let mut probe1 = create_probe("Gosho", 88, snes);
diagnostic_check(&probe1);
recharge_probe(&mut probe1, 22);
update_status(&mut probe1, "Expoding");
//diagnostic_check(&probe1);
let reading = probe1.last_reading;
analyze_critical_sensor(reading);
//ne baca, zasstruct SensorData {
temperature : f64,
radiation_level : u32,
}
fn signal_sensor_data(data : &SensorData) {
println!("Temperature: {}\nRads: {}", data.temperature, data.radiation_level);
}
struct Probe {
name : String,
battery_precentage : u8,
last_reading : SensorData,
status : String,
}
fn signal_probe_data(prob : &Probe) {
println!("Name: {}\nBattery: {}", prob.name, prob.battery_precentage);
signal_sensor_data(&prob.last_reading);
println!("Satus: {}", prob.status);
}
fn create_sensor_data(temperature : f64, radiation_level : u32) -> SensorData {
SensorData {
temperature,
radiation_level,
}
}
fn create_probe(name : &str, battery_precentage : u8, sensor_data : SensorData) -> Probe {
Probe {
name : String::from(name),
battery_precentage,
last_reading : sensor_data,
status : String::from("chill"),
}
}
fn diagnostic_check(probe : &Probe) {
if probe.battery_precentage < 20 {
println!("Noa bttery");
} else {
signal_probe_data(probe);
}
}
fn recharge_probe(probe : &mut Probe, ammount : u8) {
probe.battery_precentage =
if probe.battery_precentage + ammount > 100 {
100
} else {
probe.battery_precentage + ammount
};
}
fn update_status(probe : &mut Probe, new_status : &str) {
probe.status = String::from(new_status);
}
fn analyze_critical_sensor(sensor : SensorData) {
let mut flag : bool = false;
if sensor.radiation_level > 100 {
println!("Radioactive\n");
flag = true;
}
if sensor.temperature > 150.0 {
println!("Too hot🤤\n");
flag = true;
}
if !flag {
println!("It's chill\n");
}
}
fn main() {
let snes = create_sensor_data((67) as f64, 24);
let mut probe1 = create_probe("Gosho", 88, snes);
diagnostic_check(&probe1);
recharge_probe(&mut probe1, 22);
update_status(&mut probe1, "Expoding");
//diagnostic_check(&probe1);
let reading = probe1.last_reading;
analyze_critical_sensor(reading);
//ne baca, zashtoto SensorData struct-a nqma copy trait, i pametta na heap-a se prehvurlq na reading direktno sled
//prisvoqvaneto mu
}htoto SensorData struct-a nqma implementiran copy trait, i pametta na heap-a se prehvurlq na reading direktno sled
//prisvoqvaneto mu
}

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

Орлин качи първо решение на 21.10.2026 21:00 (преди 6 дена)

Кодът в представения вид не се компилира, защото голяма част от него е дублирана и има текст извън коментар. Освен това полето battery_percentage е именувано неправилно като battery_precentage. Основните концепции за ownership и borrowing са приложени, но обяснението за partial move е неточно — SensorData не съдържа данни в heap паметта.