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