Code:
class Lista {
public:
struct Element {
Covek covek;
Element *levi, *desni;
};
Element *glava;
Lista () {};
Lista (const &Lista);
void Add();
friend Element* nadji(char ime[21],char prezime[26],int god, Element* pok);
};
...
struct Element {
Covek covek;
Element *levi, *desni;
};
int ind=0;
Element* nadji(char ime[21],char prezime[26],int god, Element* pokazivac)
{
if ((stricmp(ime,pokazivac->covek.UzmiIme())==0) && (stricmp(prezime,pokazivac->covek.UzmiPrezime())==0)
&& (god==pokazivac->covek.UzmiGod()))
{
return(pokazivac);
}
nadji(ime,prezime,god,pokazivac->levi);
nadji(ime,prezime,god,pokazivac->desni);
}
void Lista::Add()
{
char ime[21],imeonog[21];
char prezime[26],prezimeonog[26];
int godrodjenje,godrodjenjaonog;
int godsmrti;
if (ind==0)
{
cout << "Unesi prvog clana porodicnog stabla: ";
Element *pok = new Element;
cout << "Unesi ime: ";
cin >> ime;
cout << "Unesi prezime: ";
cin >> prezime;
cout << "Unesi godinu rodjenja: ";
cin >> godrodjenje;
cout << "Unesi godinu smrti: ";
cin >> godsmrti;
pok->covek.StaviIme(ime);
pok->covek.StaviPrezime(prezime);
pok->covek.StaviGodRodj(godrodjenje);
pok->covek.StaviGodSmrti(godsmrti);
pok->levi=NULL;
pok->desni=NULL;
ind=1;
glava=pok;
}
else if (ind==1)
{
cout << "Unesi ime onog cije roditelje unosite: ";
cin >> imeonog;
cout << "Unesi prezime onog cije roditelje unosite: ";
cin >> prezimeonog;
cout << "Unesi godinu rodjenja onog cije roditelje unosite: ";
cin >> godrodjenjaonog;
Element *pok=glava;
pok = nadji(imeonog,prezimeonog,godrodjenjaonog,pok);
cout << "Unesi njegovu majku: ";
Element *pok1 = new Element;
cout << "Unesi ime: ";
cin >> ime;
cout << "Unesi prezime: ";
cin >> prezime;
cout << "Unesi ime: ";
cin >> godrodjenje;
cout << "Unesi ime: ";
cin >> godsmrti;
pok1->covek.StaviIme(ime);
pok1->covek.StaviPrezime(prezime);
pok1->covek.StaviGodRodj(godrodjenje);
pok1->covek.StaviGodSmrti(godsmrti);
pok->levi=pok1;
pok1->levi=NULL;
pok1->desni=NULL;
cout << "Unesi njegovog oca: ";
Element *pok2 = new Element;
cout << "Unesi ime: ";
cin >> ime;
cout << "Unesi prezime: ";
cin >> prezime;
cout << "Unesi ime: ";
cin >> godrodjenje;
cout << "Unesi ime: ";
cin >> godsmrti;
pok2->covek.StaviIme(ime);
pok2->covek.StaviPrezime(prezime);
pok2->covek.StaviGodRodj(godrodjenje);
pok2->covek.StaviGodSmrti(godsmrti);
pok->desni=pok2;
pok2->levi=NULL;
pok2->desni=NULL;
}
}
OK, krenuo sam onako kako si mi rekao pa sam se skontao kako bi mogao
da realizujem i onako kako sam pomislito, tj. da za svaki unos novog
clana pitam za onog clana za kog treba uneti roditelje (nisam uzeo u obzir
bracu i sestre). Znaci hteo bih da realizujem rekurzivnu f-ju sa kojom bi
nasao tog clana liste, i onda obavio unos njegove majke i oca.
Problem je kod te rekurzivne f-je sto treba da mi vrati pokazivac tipa Element,
a on je u klasi, pa sam ga ja ponovo napisao (probao sam i sa razresenjem Lista::
ali to ne reaguje). Da li je to ok, i mogu li to nekako drugacije odraditi?
Ovde:
Element *pok=glava;
...zelim da prenesem pokazivac po vrednosti, tj. da f-ji uvek prenesem
pokazivac na glavu te liste, pa da odatle krene pretragu.
Ne funcionise sa pokazivacem na pokazivac. Znaci ptanje je kako da pokazivac prenesem
f-ji po vrednosti?
Ovaj kod mi prodje kompajler ali mi linker ispise:
predak.obj : error LNK2001: unresolved external symbol "struct Lista::Element * __cdecl nadji(char * const,char * const,int,struct Lista::Element *)" (?nadji@@YAPAUElement@Lista@@QAD0HPAU12@@Z)
Debug/Pretci.exe : fatal error LNK1120: 1 unresolved externals
[Ovu poruku je menjao android~paranoid dana 06.08.2006. u 22:33 GMT+1]
Mislim, šta reći !