[ bulat666 @ 19.06.2008. 23:51 ] @
Ne bih da kazem da mi treba neko ko ce da mi uradio seminarski rad ali moram jel odista slab sam sa tim predmeteom (programski jezici) Nisam ni paskal polozio a vec mi na nos naturaju "c". Naime, radi se o sledecem: "Napisati program u C-u koji kreira binarno stablo (informacioni deo svakog čvora je tipa int) i izračunava sumu svih vrednosti iz čvorova, zatim pronalazi najveću i najmanju vrednost u drvetu i štampa sve ove vrednosti, sa odgovarajućim propratnim tekstom.

Uputstvo: koristiti jedan od postojećih mogućnosti za obilazak drveta (inorder, priorder ili postorder) i prilikom takvog obilaska sumirati sve vrednosti. Slično ćete postupiti i za trazenje najveće, odnosno najmanje vrednosti."

Sta da vam kazem ako znate POMOZITE! :D .Od sve ove price ja znam samo sta su binarna stabla a kako da sumiram vrednosti iz cvora e to stvarno ne znam! I ako neko bude imao volju i zivaca da mi samo napise postupak i objasnjenje "zasto je to tako?" Hvala u napred!
[ bulat666 @ 23.06.2008. 18:25 ] @
ok, krenuo sam da radim sa ortakom i tako nadjemo neki materijal vezan za ovo... Bilo kako bilo... Krenemo da izkompajliramo kod i naletimo na 28 gresaka is ve su vezne za "struct tnode". Ok da ne "duljim" dalje ostavicu kod pa ako neko zna da mi bar pokaze gde gresim (zadatak nije gotov):

using Win32

namespace SumaVrednostiIzCvora
struct tnode
{
int data;
struct tnode *lchild, *rchild;
};
#include <stdio.h>
#include <stdlib.h>
struct tnode
{
int data;
struct tnode *lchild, *rchild;
};
struct tnode *insert(struct tnode *p, int val)
{
struct tnode *temp1, *temp2;
if(p == null)
{
p = (struct tnode *) malloc(sizeof(struct tnode));
{
printf("Greska\n");
exit(0);
}
p->data == val;
p->lchild=p->rchild=null;
}
else
{
temp1 = p;
while(temp1 != null)
{
temp2 = temp1;
if( temp ->data > val)
temp1 = temp1->lchild;
else
temp1 = temp1->rchild;
}
if( temp2->data > val)
{
temp2->lchild = (structtnode*)malloc(sizeof(structtonde));
temp2 = temp2->lchild;
if(temp2 == null)
{
printf("Greska\n");
exit(0);
}
temp2->data = val;
temp2->lchild=temp2->rchild = null;
}
else
{temp2->rchild = (struct tnode*)malloc(sizeof(struct tnode));
temp2 = temp2->rchild;
if(temp2 == null)
{
printf("Greska\n");
exit(0);
}
temp2->data = val;
temp2lchild=temp2->rchild = null;
}
}
return(p);
}
void inorder(struct tnode *p)
{
if(p != null)
{
inorder(p->lchild);
printf("%d\t",p-data);
inorder(p->rchild);
}
}
void main()
{
struct tnode *root = null;
int n,x;
printf("Unesite vrednost podataka koji se smesta u cvor\n");
scanf("d%",&x);
root = insert(root,x);
}
inorder(root);
}
/* Ovo do sad je deo koji sam iskoristio sa predavanja
{
if (drvo == NULL)
return 0;
return suma_cvorova(drvo->l) +
drvo->broj +
suma_cvorova(drvo->d);
}
int broj_cvorova(cvor* drvo)
{
if (drvo == NULL)
return 0;
return broj_cvorova(drvo->l) +
1 +
broj_cvorova(drvo->d);
}
int broj_listova(cvor* drvo)
{
if (drvo == NULL)
return 0;
if (drvo->l == NULL && drvo->d == NULL)
return 1;
return broj_listova(drvo->l) +
broj_listova(drvo->d);
}
int suma_listova(cvor* drvo)
{
if (drvo == NULL)
return 0;
if (drvo->l == NULL && drvo->d == NULL)
return drvo->broj;
return suma_listova(drvo->l) +
suma_listova(drvo->d);
}
void ispisi_listove(cvor* drvo)
{
if (drvo == NULL)
return;
ispisi_listove(drvo->l);
if (drvo->l == NULL && drvo->d == NULL)
printf("%d ", drvo->broj);
ispisi_listove(drvo->d);
}
/* A ovo je deo koji bi trebao da vrsi sumiranje

{
if (drvo==NULL)
return 0;
if (drvo->d==NULL)
return drvo->broj;
return max_vrednost(drvo->d);
}
/* a ovo je trazenje maximalne vrednosti u stablu