Citat:
djoka_l: Ako ti izraz "associative array" ništa ne znači, problem ćeš rešiti vrlo teško, u suprotnom rešenje je u nekoliko redova...
Da, baš je inače vrlo teško rešiti... odmah da odustane od zadatka ako ne zna šta su asocijativni nizovi... :)
Inače, trebalo je da ponudiš korisniku skicu tog "teškog" rešenja, možda bi mu značilo...
--
@korisnik07
Ako bi recimo hteo pešaka (bez biblioteka) da rešiš problem i to još sa listama recimo kako si inicijalno hteo... evo najjednostavnijeg rešenja:
Code:
struct Node
{
string rec;
int broj_ponavljanja;
Node *prethodni, *sledeci;
};
Tako bi recimo mogla da izgleda lista.
F-je koje bi otprilike trebalo da obezbediš:
Code:
Node *DodajNaKrajListe(Node *lista, const string &rec);
// F-ja PronadjiElement vraća NULL ako ne pronađe datu reč
Node *PronadjiElement(Node *pocetak_liste, const string &rec);
void IspisiListu(Node *pocetak_liste);
Ne mora sve ovako da bude, ali za početak prolazi...
Code:
int main()
{
Node *pocetak_liste = new Node;
Node *kraj_liste = pocetak_liste;
string rec;
pocetak_liste->prethodni = NULL;
pocetak_liste->sledeci = NULL;
while(/*neki uslov za izlazak kad dodjes do poslednje reči za učitavanje*/)
{
// učitaj string (rec) odakle već učitavaš...
// rec = ...
// linearna pretraga ti je zadovoljavajuća za zadatak sem ako nije drugačije navedeno
Node *pr = PronadjiElement(pocetak_liste, rec);
if(pr != NULL)
{
pr->broj_ponavljanja++;
}
else
{
// dodaš na kraj liste i taj kraj vratiš kao povratnu vrednost
kraj_liste = DodajNaKrajListe(kraj_liste, rec);
}
}
IspisiListu(pocetak_liste);
// obriši listu...
return(0);
}
Pisao sam ovo napamet... ali trebalo bi da ti je sada malo jasnije. Ove funkcije bi trebalo da znaš da napišeš...