[ lana84 @ 18.05.2003. 04:09 ] @
imam projekat iz c/unix, i jednostavno mi nije jasno kako da ga zapocnem, a kamoli zavrsim, tako da mi treba mala pomoc :)

ovako, projekat trazi sledece:

da se napise program u C koji cita text iz 'stdin', identifikuje reci, i dodaje ih u AVL drvo koristeci strcmp funciju za upisivanje u drvo. ako program naleti na rec koja vec nije u drvetu, dodaje je u drvo, u drugom slucaju je ignorise i gleda za sledecu. drvo mora da bude balansirano.

sva slova moraju biti mala slova tako da se The i the tretiraju kao ista rec.

rec se sastoji od slova (a...z, A...Z). - i ' nisu validni. kada je u pitanju - onda slova ispred - se tretira kao jedna rec i reci posle - se tretiraju kao druga rec. kada je u pitanju ', onda se samo slova ispred ' tretiraju kao rec, oni posle se ignoriraju. reci koje sadrze brojeve se ignorisu. reci takodjer moraju biti duze od dva slova.

kada se ceo dokument (ili unos sa keyboard) procesiraju, tada broj nodova i maximalna dubina drveta moraju biti reportovani u 'stdout', npr

Number of nodes in tree is 472
Height of tree is 9

reci moraju biti napisane po alfabeticnom redu. Reci moraju biti sacuvane u dict.txt, deleci svaku rec sa novom linijom, npr

all
alphabetical
can
found

te reci gore bi predstavljale recnik uzet za prvu recenicu ovog paragrafa i sacuvan u dict.txt - koji bi izbacio sve reci manje od 3 slova.

program mora uzeti input kroz stdin i binarno drvo za kolektovanje reci (ili pointera reci ili struktura), drvo mora biti balansirano dok se upisuje vise inputa. sortirana lista reci mora biti sacuvana u file dict.txt. maximalni broj unikatnih reci je 500 sa maximalnim brojem duzine reci od 15.

drugi deo programa je:

treba se napisati program koji cita file dict.txt (iz proslog dela) i dodaje reci u hash tablu.

program treba da cita text iz 'stdin', identifikuje reci na isti nacin kao i u prvom delu i proverava ih u recniku hash table. ako nema iste reci u hash tabli, onda cela rec treba da se reportuje na stderr zajedno sa brojem linije i pozicijom karaktera.

program mora koristiti hash tablu da bi sacuvao reci iz recnika (ili pointere reci ili struktura). kao i u proslom delu, maximalni broj reci je 500 u recniku sa maximalnim brojem karaktera od svake reci 15. velicina reci i strim upisivanja mora biti proveren odmah.

hvala
[ leka @ 18.05.2003. 19:59 ] @
Svetlana, ovo je tipičan "zadatak" u školama ...
Moram pre svega da ukažem na jednu malenu grešku - strcmp() je standardna funkcija za poređenje stringova, a ne funkcija za dodavanje u stablo...

Što se tiče rešavanja tvog problema... stvar je više vezana za drugu diskusionu grupu koja se zove teorija programiranja (po meni) nego za C++. Zašto? - AVL stabla, balansirana stabla, hash tabele su nešto što predstavlja bazne stvari kad je programiranje u pitanju i mislim da bi bilo okej da se ovo prebaci na teorija programiranja. :)

Što se tiče realizacije tvog programa - tvoj problem je rešen u knjizi koja se zove "Mastering Algorithms in C", jedna od najboljih knjiga koje imam u svojoj kućnoj biblioteci a koja se bavi dinamičkim strukturama podataka, algoritmima i numeričkim metodama (moja omiljena grana matematike, zajedno sa diskretnom matematikom). Predlažem ti da KUPIŠ tu knjigu i da je pročitaš nekoliko puta dok sve iz nje ne naučiš, kad sve to naučiš slobodno možeš sebe da zoveš programerom. Ozbiljan sam.

Da se vratimo na temu - tvoj problem je autor Kyle Laudon obradio u poglavlju 12 Sorting and Searching sekcija Binary Search Example: Spell Checking.

U pomenutoj knjizi su takođe obrađena i AVL (Adel'son-Vel'skii and Landis) stabla, kao i hash tabele.

P.S. naravno nije CEO tvoj problem rešen! - Rešene su bazne stvari, tako da u toj knjizi imaš dobru podlogu na kojoj možeš rešiti svoj problem.
[ t3chX @ 18.05.2003. 22:55 ] @
"Data structures in C++" by Angela B. Shiflet moze pomoći ... Iako za Cpp applicable je.
[ lana84 @ 19.05.2003. 02:30 ] @
da, ja sam skolarac :). nemam ni sama pojma koji me je vrag naterao da studiram informatiku, ali eto, nadje se :). u svakom slucaju puno vam hvala, probacu da nadjem te knjige, valjda ce nesto ispasti od toga jer ipak to moram da predam za nedelju dana. gore verovatno prevod zadatka i nije bas najbolji, jer assignment je na engleskom, ali eto, potrudih se.

jos jednom hvala.

ceca
[ Riste Pejov @ 19.05.2003. 10:30 ] @
Jednom davno, i ja sam imao slican zadatak, pa eto nasao dosta dobro objasnenje i kod o AVL drva ovde: http://www.cmcrossroads.com/br...ftp/src/libs/C++/AvlTrees.html
isto mozes pogledati http://www.oopweb.com/Algorithms/Files/Algorithms.html fenomenalan resurs o algoritmima :)
[ leka @ 19.05.2003. 11:32 ] @
Citat:
lana84:
da, ja sam skolarac :). nemam ni sama pojma koji me je vrag naterao da studiram informatiku, ali eto, nadje se :).


Ceco,
nema veze sto si skolarac, u programiranju jedino sto je bitno je volja, i NE-mrznja matematike! :) Sto se tvog zadatka tice, mozemo skupa da resavamo deo po deo i diskutujemo sve ovde, ali ne ocekuj da mi odradimo tvoj posao - gde zapne, ti posalji svoj kod, mi cemo proanalizirati, pronaci greske, eventualno unaprediti i slicno...

Nemoj se stiditi da ista pitas sto ne razumes... :)
[ lana84 @ 19.05.2003. 12:41 ] @
'I PROMISE' da se necu stiditi :) hvala ti u svakom slucaju, nadam se da je ne-persiranje ok :)

ceca

e-mail adrese cu proveriti sada, nadam se da ce biti helpful :)

caos
[ leka @ 19.05.2003. 14:48 ] @
Hmm, kakve e-mail adrese?
[ leka @ 19.05.2003. 15:03 ] @
Hehe, bravo ja!
- Setio sam se jednog odlicnog linka na koji sam pre par godina naleteo, a koji SAVRSENO objasnjava razne vrste stabala, ne samo AVL!

http://www.seanet.com/users/arsen/avltree.html

Ovo treba svako da pogleda! A takodje i JAVA programeri, da vide kako covek napravi dobar JAVA applet. :) Svaka mu cast!
[ lana84 @ 20.05.2003. 06:38 ] @
mislila sam na web adrese sto je poslao riste.
[ leka @ 21.05.2003. 04:41 ] @
Naravno, moj predlog je prvo da primenis staru, oprobanu programersku praksu "podeli i pobedi" - dakle lepo sedni jedan dan i vidi kako mozes svoj problem da podelis na vise nezavisnih celina (modula). I ona mozemo ovde da diskutujemo kako da se neki od tih pojedinacnih modula realizuju (iskodiraju)...
[ lana84 @ 21.05.2003. 12:32 ] @
ma razumem na sta si mislio, prvi deo sam uradila, i sve radi, to sa AVL tree. verovatno cu vam dosadjivati sto se tice Hash Tabele, ovo prvo i nije bilo toliko tesko koliko sam si ja umislila.

hvala u svakom slucaju

ceca
[ leka @ 26.05.2003. 14:16 ] @
Mislim generalno na stari, isprobani princip u programiranju da se veliki poslovi izdele na sto manje (atome) sitne celine koje mozes odvojeno da razvijas...