diff --git a/cv7/program.c b/cv7/program.c index 73fb855..e22a679 100644 --- a/cv7/program.c +++ b/cv7/program.c @@ -49,25 +49,31 @@ int count_products(Node *node) { void run_expert_system(Node *node) { while (node) { + // Если достигли листа, выводим ответ и завершаем if (!node->yes && !node->no) { printf("*%s\n", node->text); printf("Koniec\n"); return; } + + // Выводим текущий вопрос printf("%s\n", node->text); - printf("Odpovedajte 'a' pre prvu moznost alebo 'n' pre druhu moznost\n"); - + printf("Odpovedajte 'a' pre prvu moznost alebo 'n' pre druhu moznost.\n"); + char answer; if (scanf(" %c", &answer) != 1) { + // Если нет корректного ввода, завершаем printf("Koniec\n"); return; } - + + // Переход к узлу "да" или "нет" if (answer == 'a') { node = node->yes; } else if (answer == 'n') { node = node->no; } else { + // Если введен некорректный ответ, завершаем printf("Koniec\n"); return; } @@ -75,6 +81,7 @@ void run_expert_system(Node *node) { } + void free_tree(Node *node) { if (node) { free_tree(node->yes);