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