Update cv7/program.c
This commit is contained in:
		
							parent
							
								
									c2bcbcfff8
								
							
						
					
					
						commit
						282c50bfd0
					
				| @ -4,34 +4,38 @@ | ||||
| 
 | ||||
| #define SIZE 256 | ||||
| 
 | ||||
| // Štruktúra uzla binárneho stromu
 | ||||
| // Шструктура узла бинарного дерева
 | ||||
| struct strom { | ||||
|     char otazka[SIZE]; | ||||
|     struct strom* ano; | ||||
|     struct strom* nie; | ||||
| }; | ||||
| 
 | ||||
| // Funkcia na načítanie stromu zo štandardného vstupu
 | ||||
| // Функция для чтения базы правил из стандартного ввода
 | ||||
| struct strom* nacitaj_strom() { | ||||
|     char buffer[SIZE]; | ||||
|     if (!fgets(buffer, SIZE, stdin) || buffer[0] == '\n') { | ||||
|         return NULL;  // Koniec databázy alebo prázdny riadok
 | ||||
|         return NULL;  // Конец базы данных или пустая строка
 | ||||
|     } | ||||
| 
 | ||||
|     struct strom* uzol = malloc(sizeof(struct strom)); | ||||
|     if (!uzol) { | ||||
|         printf("Chyba: nedostatok pamäte.\n"); | ||||
|         exit(1); | ||||
|     } | ||||
|     strcpy(uzol->otazka, buffer); | ||||
| 
 | ||||
|     if (buffer[0] == '*') { | ||||
|         uzol->ano = uzol->nie = NULL;  // Tento uzol je list (odpoveď)
 | ||||
|         uzol->ano = uzol->nie = NULL;  // Это лист (ответ)
 | ||||
|     } else { | ||||
|         uzol->ano = nacitaj_strom();  // Rekurzívne načítanie vetvy pre "áno"
 | ||||
|         uzol->nie = nacitaj_strom();  // Rekurzívne načítanie vetvy pre "nie"
 | ||||
|         uzol->ano = nacitaj_strom();  // Чтение ветви для "да"
 | ||||
|         uzol->nie = nacitaj_strom();  // Чтение ветви для "нет"
 | ||||
|     } | ||||
| 
 | ||||
|     return uzol; | ||||
| } | ||||
| 
 | ||||
| // Funkcia na uvoľnenie pamäte stromu
 | ||||
| // Функция для освобождения памяти дерева
 | ||||
| void znic_strom(struct strom* uzol) { | ||||
|     if (uzol) { | ||||
|         znic_strom(uzol->ano); | ||||
| @ -40,13 +44,13 @@ void znic_strom(struct strom* uzol) { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Funkcia na interakciu s používateľom (prechádzanie stromu)
 | ||||
| // Функция для взаимодействия с пользователем (прохождение дерева)
 | ||||
| void spusti_expert_system(struct strom* uzol) { | ||||
|     if (!uzol) return; | ||||
| 
 | ||||
|     printf("%s", uzol->otazka); | ||||
|     if (!uzol->ano && !uzol->nie) { | ||||
|         printf("Koniec\n");  // Konečná odpoveď
 | ||||
|         printf("Koniec\n");  // Окончательный ответ
 | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -63,14 +67,14 @@ void spusti_expert_system(struct strom* uzol) { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Funkcia na spočítanie listov stromu (konečných odpovedí)
 | ||||
| // Функция для подсчета листьев дерева (окончательных ответов)
 | ||||
| int pocet_listov(struct strom* uzol) { | ||||
|     if (!uzol) return 0; | ||||
|     if (!uzol->ano && !uzol->nie) return 1; | ||||
|     return pocet_listov(uzol->ano) + pocet_listov(uzol->nie); | ||||
| } | ||||
| 
 | ||||
| // Hlavná funkcia
 | ||||
| // Главная функция
 | ||||
| int main() { | ||||
|     struct strom* databaza_znalosti = nacitaj_strom(); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user