Обновить cv7/program.c
This commit is contained in:
		
							parent
							
								
									5fb9f60c37
								
							
						
					
					
						commit
						a31dd9e12f
					
				| @ -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; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user