[ danijel_markic @ 28.01.2006. 09:58 ] @
Imao sam za izraditi ovaj program: Code: Napisati funkciju za punjenje memorijski rezidentnog binarnog stabla u čije čvorove treba upisati: cijena artikla (realni broj) i naziv artikla (15+1 znakova). Stablo treba sortirati po cijeni artikala; lijevi jeftiniji, desni skuplji. Napisati funkciju za ispis elementa za koju je ulazni argument korijen stabla. Ispis treba biti poredan po cijeni od najjeftinijeg do najskupljeg artikla. Napisati funkciju koja ispiše sve proizvode čija je cijena manja od neke određene vrijednosti koja se unese u glavnoj funkciji programa tijekom izvršavanja programa. Ovo sam uspio napraviti Code: #include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef struct s_element { char* ime; double cijena; } Element; typedef struct s_node { struct s_node* parent; struct s_node* left; struct s_node* right; Element el; } Node; Node* Posadi(Element p_el, Node* roditelj); Node* Napravi_Lijevo(Element p_el, Node* korijen); void PrintOut(Node* korijen); void Ubaci(Element p_el, Node* korijen); void PrintOutCijena(Node* korijen, double cijena); int main() { int j; FILE *test; Node* root; Element element; printf("TEST\n"); test = fopen ("Binarno drvo.txt", "r"); if (!test) { printf ("Nema ulaznih podataka\n"); exit (1); } j = 1; root = NULL; while (fscanf (test, "%s %f", element.ime, &element.cijena) != EOF) { printf ("%2d. ulazni podatak je %-15s %6.2f\n", j++, element.ime, element.cijena); root = Posadi (element, root); } float d; printf("Upisi trazenu cijenu: "); scanf("%f",&d); printf("\n"); PrintOutCijena(root,d); return 0; } Node* Posadi(Element p_el, Node* roditelj) { Node* temp = (Node*)malloc(sizeof(Node)); temp->parent = roditelj; temp->left=0; temp->right=0; temp->el = p_el; return temp; } Node* Napravi_Lijevo(Element p_el, Node* korijen) { if (!korijen->left) { Node* temp = korijen->left = Posadi(p_el,korijen); return temp; } return 0; } Node* Napravi_Desno(Element p_el, Node* korijen) { if (!korijen->right) { Node* temp = korijen->right = Posadi(p_el,korijen); return temp; } return 0; } void PrintOut(Node* korijen) { if (korijen) { PrintOut(korijen->left); printf("ARTIKL: %s\tCIJENA: %f\n",korijen->el.ime, korijen->el.cijena); PrintOut(korijen->right); } } void PrintOutCijena(Node* korijen, double cijena) { if (korijen) { PrintOutCijena(korijen->left,cijena); if (korijen->el.cijena < cijena) printf("ARTIKL: %s\tCIJENA: %f\n",korijen->el.ime, korijen->el.cijena); PrintOutCijena(korijen->right, cijena); } } void Ubaci(Element p_el, Node* korijen) { if (korijen) { if (p_el.cijena < korijen->el.cijena) { if (korijen->left) { Ubaci(p_el,korijen->left); return; } korijen->left = Posadi(p_el,korijen); } else { if (korijen->right) { Ubaci(p_el,korijen->right); return; } korijen->right = Posadi(p_el,korijen); } } else return; } Sada imam problem kada iskompajliram program (prodje bez problema) i pokrenem ga program, jednostavno zablokira... Moze li netko pomoci?... Unaprijed hvala |