diff --git a/cv7/program.c b/cv7/program.c index e262130..78e3aa8 100644 --- a/cv7/program.c +++ b/cv7/program.c @@ -46,30 +46,29 @@ int count_items(Node *node) { return count_items(node->yes) + count_items(node->no); } -void ask_question(Node *node) { - if (node == NULL) return; +int ask_question(Node *node) { + if (node == NULL) return 1; if (node->text[0] == '*') { printf("%s", node->text); - return; + return 1; } printf("Odpovedajte 'a' pre prvu moznost alebo 'n' pre druhu moznost.\n"); printf("%s", node->text); char answer; - if (scanf(" %c", &answer) != 1) { + if (scanf(" %c", &answer) != 1 || (answer != 'a' && answer != 'n')) { printf("Nerozumiem\n"); - return; + return 0; // Возвращаем 0, чтобы завершить программу. } if (answer == 'a') { - ask_question(node->yes); + return ask_question(node->yes); } else if (answer == 'n') { - ask_question(node->no); - } else { - printf("Nerozumiem\n"); - return; + return ask_question(node->no); } + + return 1; } int main() { @@ -80,12 +79,15 @@ int main() { return 1; } - printf("Expert z bufetu to vie.\n"); // Сообщение об успешной загрузке базы + printf("Expert z bufetu to vie.\n"); int item_count = count_items(root); printf("Pozna %d druhov ovocia a zeleniny.\n", item_count); - ask_question(root); - + if (!ask_question(root)) { + free_tree(root); + return 0; // Завершаем программу, если был некорректный ввод. + } + printf("Koniec\n"); free_tree(root); return 0;