This commit is contained in:
Daniel Hladek 2019-11-18 16:25:33 +01:00
commit 734d79b6d8
3 changed files with 126 additions and 0 deletions

47
README.md Normal file
View File

@ -0,0 +1,47 @@
# Mudrc zo supermarketu
Vytvorte znalostný systém, ktorý pomôže pri určení druhu ovocia alebo zeleniny.
Báza znalostí sa skladá z otázok typu áno a nie a odpovedí.
Systém najprv načíta bázu otázok a odpovedí. Každá otázka alebo odpoveď sa nachádza na práve jednom riadku. Odpovede sú vyznačené hviezdičkou na začiatku riadka.
Po otázke na najprv nasleduje načítanie ďalšieho kroku áno a potom kroku nie.
Každý krok znalostného systému je alebo odpoveď alebo ďalšia otázka.
Báza pravidiel je ukončená prázdnym riadkom.
Otázky a odpovede spolu tvoria binárny vyhľadávací strom zapísaný vo formáte pre-order.
Príklad bázy pravidiel s dvoma otázkami a troma druhmi tovaru:
Rastie to na strome?
*Jablko
Rastie to pod zemou?
*Mrkva
*Šalát
Po načítaní bázy pravidiel vypíšte počet tovarov v báze pravidiel.
V prípade, že sa nedá správne načítať báza pravidiel vypíšte chybové hlásenie.
Ak sa bázu pravidiel podarilo načítať, spustite znalostný systém prvou otázkou.
Ďalšie otázky alebo odpovede zobrazujte podľa toho, či používateľ odpovedá `a` pre prvú
možnosť alebo `n` pre druhú. Ak systém nájde odpoveď, vypíšte správu a skončite program.
Ak používateľ zadá nesprávny vstup, vypíšte správu a skončite program.
Príklad vstupu:
Je to ovocie alebo zelenina?
*Jablko
*Mrkva
n
Príklad výstupu:
MUDrC to vie.
Pozna 2 druhov ovocia a zeleniny.
Odpovedajte 'a' alebo 'n'
Je to ovocie alebo zelenina?
*Mrkva
Koniec

55
program.c Normal file
View File

@ -0,0 +1,55 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#define SIZE 1000
struct node {
char question[SIZE];
struct node* left;
struct node* right;
};
//https://eli.thegreenplace.net/2009/11/23/visualizing-binary-trees-with-graphviz
void print_tree(struct node* tree,int offset){
for (int i = 0; i < offset; i++){
printf(" ");
}
printf("%s",tree->question);
if (tree->left){
print_tree(tree->left,offset +3);
print_tree(tree->right,offset +3);
}
}
struct node* read_tree(){
return NULL;
}
void traverse(struct node* tree){
}
int count_fruit(struct node* tree){
return 0;
}
void delete_tree(struct node* tree){
if (tree != NULL){
delete_tree(tree->left);
delete_tree(tree->right);
free(tree);
}
}
int main(){
printf("MUDrC to vie.\n");
struct node* tree = read_tree();
printf("Pozna %d druhov ovocia a zeleniny.\n",count_fruit(tree));
printf("Odpovedajte 'a' alebo 'n'\n");
traverse(tree);
delete_tree(tree);
}

24
rules.txt Normal file
View File

@ -0,0 +1,24 @@
Je to ovocie alebo zelenina ?
Rastie to nad zemou alebo pod zemou ?
Je to červené?
* Paradajka.
Dáva sa to do polievky ?
Je to biele ?
* Kaleráb
* Karfiol
* Šalát
Dáva sa to do polievky ?
Je to biele?
* Petržlen
* Mrkva
* Arašid
Pestuje sa na Slovensku ?
Rastie na strome ?
Má pevnú šupku ?
* Jablko
* Kokos
* Moruša
Je to citrus?
* Pomaranč
* Banán