From a31dd9e12f707632963002e56016e032f9bc424e Mon Sep 17 00:00:00 2001 From: Yevhen Kozirovskyi Date: Thu, 14 Nov 2024 20:36:17 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20cv7/program.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv7/program.c | 54 +++++++++++++-------------------------------------- 1 file changed, 14 insertions(+), 40 deletions(-) diff --git a/cv7/program.c b/cv7/program.c index 4c23f5d..fa26276 100644 --- a/cv7/program.c +++ b/cv7/program.c @@ -25,25 +25,9 @@ void uvolni(Node *uzol) { } } -void naloz_bazu(Node **root, FILE *file) { - char line[256]; - if (fgets(line, sizeof(line), file) == NULL || line[0] == '\n') { - *root = NULL; - return; - } - - if (line[0] == '*') { - *root = vytvor_uzol(line + 1); // odstránenie '*' - } else { - *root = vytvor_uzol(line); - naloz_bazu(&((*root)->yes), file); - naloz_bazu(&((*root)->no), file); - } -} - int spocitaj_druhy(Node *uzol) { if (!uzol) return 0; - if (!uzol->yes && !uzol->no) return 1; // odpoveď + if (!uzol->yes && !uzol->no) return 1; // Это лист, т.е. ответ return spocitaj_druhy(uzol->yes) + spocitaj_druhy(uzol->no); } @@ -70,35 +54,25 @@ void znalostny_system(Node *uzol) { } } -int main(int argc, char *argv[]) { - const char *filename = "baza.txt"; - if (argc > 1) { - filename = argv[1]; - } - - FILE *file = fopen(filename, "r"); - if (!file) { - printf("Chyba pri otváraní súboru.\n"); - return 1; - } - - Node *root = NULL; - naloz_bazu(&root, file); - fclose(file); - - if (root == NULL) { - printf("Chyba: nepodarilo sa načítať bázu pravidiel.\n"); - return 1; - } +int main() { + // Создаем дерево вопросов и ответов вручную + Node *root = vytvor_uzol("Je to ovocie alebo zelenina?"); + root->yes = vytvor_uzol("*Jablko"); + root->no = vytvor_uzol("Rastie to pod zemou?"); + root->no->yes = vytvor_uzol("*Mrkva"); + root->no->no = vytvor_uzol("*Šalát"); + // Подсчитываем количество видов int druhy = spocitaj_druhy(root); printf("Expert z bufetu to vie.\nPozna %d druhov ovocia a zeleniny.\n", druhy); - + + // Выводим инструкцию для пользователя printf("Odpovedajte 'a' pre prvu moznost alebo 'n' pre druhu moznost.\n"); + + // Запускаем систему вопросов и ответов znalostny_system(root); + // Освобождаем память uvolni(root); return 0; } - -