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; } - -