Devo implementare un metodo di una linkedlist, costituita da oggetti di tipo film che faccia una ricerca per attori, preciso che gli attori sono memorizzati negli oggetti di tipo Film in un vector di tipo string.
La procedura che riporto funziona per la ricerca per titolo e regista, non per attori, in quest' ultimo caso fallisce, e non capisco perchč:
Purtroppo scrivo molto complicato, vi prego di perdonarmi.....riporto solo la parte in cui cerco per attori, perchč ci si capisce poco se copio tutto.....semmai copiate su un editor di testo per vedere i commenti e il tutto in modo pił integro...qui non si capisce gran che.
codice:case 2: //ricerca per attori { string toReturn=""; vector<Film*> vett; if(size>0){ for(Node* tmp=header->getNext(); tmp!=trailer; tmp=tmp->getNext()) { int parola1=0; //conterņ il numeero di attori di input confrontati int parola2=0; //con quelli presenti nei vari film stringstream start(word); string control; while ((getline(start, control, ',')))//nomi sepratai da , { vector<string> actors=tmp->getElement()->getAttori(); //il vector con gli attori vector<string> ::iterator it; for (it=actors.begin(); it!=actors.end(); it++) { string name=*it; if(name==control) //posso andare alla fine del vector di attori { //e ricomincio dal begin per il prossimo attore da cercare it=actors.end(); parola2++; //altro attore trovato, incremento. } } parola1++; //ricomincia il ciclo e confronterņ un altro attore } if (parola1=parola2) //il nodo col film va bene quindi inserisco nel vector da ordinare vett.push_back(tmp->getElement()); } if(vett.size()>0) //allora ci sono film da ordinare { vector<Film*> ::iterator it; sort(vett.begin(), vett.end(), CompareFilmPtrs); for (it=vett.begin(); it!=vett.end(); it++) { Film* f=*it; toReturn+=f->toString()+'\n'; } //ordino i film e concateno la stringa finale da restituire con le info return toReturn; } } //O size č uguale a 0 oppure non ho trovato film con quegli attori che cercavo.... return toReturn="Non e' presente nel catalogo il film da lei richiesto."; break; //inutile }

Rispondi quotando