This commit is contained in:
Maksym Kovalchuk 2026-04-16 15:50:15 +00:00
parent df9cc1efc9
commit 971ff62216

View File

@ -11,7 +11,7 @@ typedef struct Tree {
struct Tree *no;
} Tree;
// читання дерева
// читання дерева (preorder)
Tree* readTree() {
char line[SIZE];
@ -21,17 +21,17 @@ Tree* readTree() {
if (line[0] == '\0') return NULL;
Tree *node = malloc(sizeof(Tree));
Tree *node = (Tree*)malloc(sizeof(Tree));
node->yes = NULL;
node->no = NULL;
if (line[0] == '*') {
node->isAnswer = 1;
int i = 1;
while (line[i] == ' ') i++;
char *p = line + 1;
while (*p == ' ') p++;
strcpy(node->text, line + i);
strcpy(node->text, p);
} else {
node->isAnswer = 0;
strcpy(node->text, line);
@ -43,16 +43,16 @@ Tree* readTree() {
return node;
}
// перевірка пустого рядка
// перевірка порожнього рядка після дерева
int EmptyLine() {
char line[SIZE];
if (fgets(line, SIZE, stdin) == NULL) return 0;
return (strcmp(line, "\n") == 0);
return line[0] == '\n';
}
// кількість листків
// підрахунок листків
int Leaves(Tree *node) {
if (!node) return 0;
if (node->isAnswer) return 1;
@ -60,7 +60,7 @@ int Leaves(Tree *node) {
return Leaves(node->yes) + Leaves(node->no);
}
// free
// очищення пам’яті
void freeTree(Tree *node) {
if (!node) return;
@ -69,7 +69,7 @@ void freeTree(Tree *node) {
free(node);
}
// запуск
// гра
void start(Tree *node) {
char input[SIZE];
@ -82,20 +82,21 @@ void start(Tree *node) {
return;
}
if (input[0] == 'a') {
int i = 0;
while (input[i] == ' ' || input[i] == '\t') i++;
if (input[i] == 'a') {
node = node->yes;
}
else if (input[0] == 'n') {
} else if (input[i] == 'n') {
node = node->no;
}
else {
} else {
printf("Nerozumiem\n");
return;
}
}
if (node && node->isAnswer) {
printf("* %s\n", node->text);
printf("*%s\n", node->text);
printf("Koniec\n");
}
}