#include #include // Структура узла для бинарного дерева typedef struct Node { char question[100]; struct Node *yes; struct Node *no; } Node; // Прототипы функций Node* createNode(char *text); void freeTree(Node *root); void askQuestions(Node *root); // Функция для создания нового узла дерева Node* createNode(char *text) { Node *node = (Node*)malloc(sizeof(Node)); strcpy(node->question, text); node->yes = NULL; node->no = NULL; return node; } // Функция для освобождения памяти дерева void freeTree(Node *root) { if (root != NULL) { freeTree(root->yes); freeTree(root->no); free(root); } } // Функция для задания вопросов и получения ответов void askQuestions(Node *root) { Node *current = root; char answer; while (current->yes != NULL && current->no != NULL) { printf("%s\n", current->question); printf("Odpovedajte 'a' pre prvu moznost alebo 'n' pre druhu moznost.\n"); answer = getchar(); getchar(); // Для захвата символа новой строки после ввода if (answer == 'a') { current = current->yes; } else if (answer == 'n') { current = current->no; } else { printf("Nespravna odpoved. Skuste znova.\n"); } } printf("*%s\n", current->question); // Вывод названия конечного объекта с * } int main() { // Сообщение о старте printf("Expert z bufetu to vie.\n"); // Создание дерева для вопросов Node *root = createNode("Je to ovocie alebo zelenina"); root->yes = createNode("Jablko"); root->no = createNode("Mrkva"); // Вывод количества видов printf("Pozna 2 druhov ovocia a zeleniny.\n"); // Процесс вопросов и ответов askQuestions(root); // Сообщение о завершении printf("Koniec\n"); // Освобождение памяти freeTree(root); return 0; }