usaa24/cv7/program.c

81 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <stdio.h>
#include <string.h>
// Структура узла для бинарного дерева
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;
}