// 2025-2026 Богданович Давид Когут Прихожденко (кдб.дійсність.укр)
взяти визначення мавка/машина;
простір мавка {
внутрішня дія перевірити_чи_дані_рівні(
М: адреса<Машина>,
шлях1: адреса<ПредметДаних>,
шлях2: адреса<ПредметДаних>
) -> логічне {
якщо шлях1 == шлях2 {
вернути так;
}
якщо шлях1.розмір != шлях2.розмір {
вернути ні;
}
змінна п: природне = 0;
поки п < шлях1.розмір {
якщо шлях1.дані[п] != шлях2.дані[п] {
вернути ні;
}
п += 1;
}
вернути так;
}
дія записати_взяте_значення(
М: адреса<Машина>,
шлях: адреса<ПредметДаних>,
значення: Значення
) {
змінна п: природне = 0;
поки п < М.взяті_значення.розмір {
змінна взяте_значення = М.взяті_значення.дані[п]::адреса;
якщо взяте_значення.шлях != пусто і перевірити_чи_дані_рівні(М, взяте_значення.шлях, шлях) {
взяте_значення.значення = значення;
вернути;
}
п += 1;
}
М.взяті_значення.дані = перевиділити<ВзятеЗначення>(М, М.взяті_значення.дані, М.взяті_значення.розмір + 1);
М.взяті_значення.дані[М.взяті_значення.розмір] = ВзятеЗначення { шлях, значення };
М.взяті_значення.розмір += 1;
}
дія знайти_взяте_значення(
М: адреса<Машина>,
шлях: адреса<ПредметДаних>,
вихід_значення: адреса<Значення>
) -> логічне {
змінна п: природне = 0;
поки п < М.взяті_значення.розмір {
змінна взяте_значення = М.взяті_значення.дані[п];
якщо взяте_значення.шлях != пусто і перевірити_чи_дані_рівні(М, взяте_значення.шлях, шлях) {
вихід_значення::вміст = взяте_значення.значення;
вернути так;
}
п += 1;
}
вернути ні;
}
дія видалити_взяте_значення(
М: адреса<Машина>,
шлях: адреса<ПредметДаних>
) -> логічне {
змінна п: природне = 0;
поки п < М.взяті_значення.розмір {
змінна взяте_значення = М.взяті_значення.дані[п]::адреса;
якщо взяте_значення.шлях != пусто і перевірити_чи_дані_рівні(М, взяте_значення.шлях, шлях) {
взяте_значення.шлях = пусто;
взяте_значення.значення = НЕДІЙСНЕ;
вернути так;
}
п += 1;
}
вернути ні;
}
}