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