From 282c50bfd0100bf6367c83614763c9ea2c636dd3 Mon Sep 17 00:00:00 2001 From: Marat Izmailov Date: Thu, 14 Nov 2024 13:18:55 +0000 Subject: [PATCH] Update cv7/program.c --- cv7/program.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/cv7/program.c b/cv7/program.c index 4c8f89e..4eb2561 100644 --- a/cv7/program.c +++ b/cv7/program.c @@ -4,34 +4,38 @@ #define SIZE 256 -// Štruktúra uzla binárneho stromu +// Шструктура узла бинарного дерева struct strom { char otazka[SIZE]; struct strom* ano; struct strom* nie; }; -// Funkcia na načítanie stromu zo štandardného vstupu +// Функция для чтения базы правил из стандартного ввода struct strom* nacitaj_strom() { char buffer[SIZE]; if (!fgets(buffer, SIZE, stdin) || buffer[0] == '\n') { - return NULL; // Koniec databázy alebo prázdny riadok + return NULL; // Конец базы данных или пустая строка } struct strom* uzol = malloc(sizeof(struct strom)); + if (!uzol) { + printf("Chyba: nedostatok pamäte.\n"); + exit(1); + } strcpy(uzol->otazka, buffer); if (buffer[0] == '*') { - uzol->ano = uzol->nie = NULL; // Tento uzol je list (odpoveď) + uzol->ano = uzol->nie = NULL; // Это лист (ответ) } else { - uzol->ano = nacitaj_strom(); // Rekurzívne načítanie vetvy pre "áno" - uzol->nie = nacitaj_strom(); // Rekurzívne načítanie vetvy pre "nie" + uzol->ano = nacitaj_strom(); // Чтение ветви для "да" + uzol->nie = nacitaj_strom(); // Чтение ветви для "нет" } return uzol; } -// Funkcia na uvoľnenie pamäte stromu +// Функция для освобождения памяти дерева void znic_strom(struct strom* uzol) { if (uzol) { znic_strom(uzol->ano); @@ -40,13 +44,13 @@ void znic_strom(struct strom* uzol) { } } -// Funkcia na interakciu s používateľom (prechádzanie stromu) +// Функция для взаимодействия с пользователем (прохождение дерева) void spusti_expert_system(struct strom* uzol) { if (!uzol) return; printf("%s", uzol->otazka); if (!uzol->ano && !uzol->nie) { - printf("Koniec\n"); // Konečná odpoveď + printf("Koniec\n"); // Окончательный ответ return; } @@ -63,14 +67,14 @@ void spusti_expert_system(struct strom* uzol) { } } -// Funkcia na spočítanie listov stromu (konečných odpovedí) +// Функция для подсчета листьев дерева (окончательных ответов) int pocet_listov(struct strom* uzol) { if (!uzol) return 0; if (!uzol->ano && !uzol->nie) return 1; return pocet_listov(uzol->ano) + pocet_listov(uzol->nie); } -// Hlavná funkcia +// Главная функция int main() { struct strom* databaza_znalosti = nacitaj_strom();