Esercizio con liste e puntatori

giuliomontenero
salve a tutti avrei bisogno di scrivere del codice riguardante questo esercizio.ecco il testo:
Una lista dinamica viene utilizzata per contenere le parole appartenenti ad un testo.Si sviluppi un sottoprogramma che prende come parametro questa lista e l'indirizzo di uno dei suoi elementi(supponiamo che tale indirizzo venga memorizzato in un parametro formale chiamato ptr).Il sottoprogramma restituisce al chiamante il puntatore al prossimo elemento nella lista che contiene una parola che inizia con la stessa lettera della parola contenuta nell'elemento puntato da ptr.Nel caso in cui non sia possibile restituire alcuna parola,il sottoprogramma restituisce il puntatore NULL.

Risposte
apatriarca
In cosa incontri difficoltà?

Vitalluni
la lista devi creartela tu o puoi usare le stl? (nel qual caso te la cavi in veramente poco tempo.) inoltre non hai specificato il linguaggio di programmazione (visto che hai i puntatori può essere sia C che C++ visto che in Java non ci sono.)

giuliomontenero
ah già è vero scusate
devo farla in c++
comunque per quanto riguarda la lista io ho già i file racchiusi in un progetto che contiene tutte le dichiarazioni delle rispettive classi Node Iterator e List con tutte le loro funzioni quindi mi basterebbe aggiungere la funzione che mi serve e in caso se fosse necessario modificare quelle esistenti

apatriarca
E quindi come mai non riesci a scrivere la funzione? Che dubbi hai? Non hai proprio idee su come farlo?

vict85
Modificare la classe lista non mi sembra la strada giusta. Ci devi lavorare sopra. Ora immagino che ci sia una qualche funzione dell'interfaccia della lista o del nodo che restituisce il puntatore al prossimo elemento (list nelle librerie standard utilizza gli iteratori che mascherano tutto questo processo ma forse anche nel tuo caso avviene così dato che hai un Node Iterator).

Ma dov'è che ti blocchi? Nel senso che caricare la lista (ponendola const per sicurezza) e il puntatore al nodo non penso che sia un problema (anche se la gestione di Node Iterator forse necessita di comprendere bene com'è l'interfaccia della classe).
Dopo che hai caricato ti basta memorizzare il carattere che stai cercando e cercarlo nella lista. Una volta che l'hai trovato restituisci l'indirizzo che ti serve e hai finito.

giuliomontenero
string* funzione(Iterator p) //la lista gliela passo come parametro di rifermento
{
   Iterator i;
   i.position()=p.position();
   string p=p.get();
   bool condizione=false;
   for(i=i.next();!i.is_null();i=i.next())
   {
      string s=i.get();
      if(s.substr(0,1)==p.substr(0,1))
      { condizione=true; break;}
   }
   if(condizione) return i.position();
   else { p=p.next(); return p.position();}
}


vict85
Dal testo direi che il return value dovrebbe essere Iterator a meno che p.position() non sia un puntatore a string. Ma personalmente penso che Iterator sia comunque meglio. Hai chiamato due variabili con lo stesso nome. Personalmente metterei p (quello che ricevi dall'utente) come const. Il break lì non mi piace, cambia il ciclo. Il return value è sbagliato e comunque crei confuzione con le due variabili. Ma ti compila? Non penso.

giuliomontenero
questo è il link per scaricare il file con il progetto e i relativi file header e sorgenti a tutte le classi

http://www.2shared.com/file/1BsmYFC8/es ... 1__2_.html

puoi scaricarlo in un secondo e poi andare ad aggiungere la funzione nella classe List e vedi se puoi aiutarmi a risolvere, così puoi vedere anche i nomi che vengono dati agli iteratori e ai nodi, o meglio chi sono i nodi e chi gli iteratori

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.