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