Oppure

Loading
14/10/05 15:10
sofia_++

ricerco un elemento in una lista per poi restituirlo alla funzione modifica per modificarne i dati.ecco la ricerca del mio programma che non so perche se inserisco il nome del primo cliente e poi chiedo di cercarlo ,lo trova ma se per esempio cerco il nome del terzo cliente non lo trova.si limita a cercare nel primo nodo(in basso ho riportato la funzione di inserimento)


persona* azienda :: ricerca()
{
    persona * pt=punt;

char name[20];
cout<<"\nInserisci il nome della persona da cercare: ";
cin>>name;

    while(pt!=0)
{
    if(strcmp(name,pt->nome)==0)
{

return pt;
}
pt=pt->succ;
}
return 0;

}


//questo e linserimento ma penso sia giusto
istream& operator>>(istream &is,azienda &registro)
{
    clrscr();
    persona * pt = registro.punt;
persona * aux=new persona;


if(registro.punt==0) //primo nodo
registro.punt=aux;
else
{
        while(pt)
        pt=pt->succ;

pt=aux;
}

aux->succ=0;

// aux=new persona; //alloco una variabile dinamica
cout<<"\nInserisci il nome del cliente: ";
is>>aux->nome;
cout<<"\nInserisci il cognome del cliente: ";
is>>aux->cognome;
cout<<"\nInserisci l'indirizzo del cliente: ";
is>>aux->indirizzo;
cout<<"\nInserisci il numero civico del cliente: ";
is>>aux->n_civico;
cout<<"\nInserisci la ragione sociale del cliente: ";
is>>aux->r_sociale;
cout<<"\nInserisci il telefono del cliente: ";
is>>aux->n_tel;

return is;
}
domani devo consegnare il programma al prof,,,,
aaa
14/10/05 18:35
pierotofy
Postato originariamente da sofia_++:

while(pt!=0)
{
    if(strcmp(name,pt->nome)==0)
{

return pt;
}
pt=pt->succ;
}



Siccome dici che il primo elemento lo trova, a occhio direi che il problema dovrebbe essere qui:

pt=pt->succ;


Questo codice cosa dovrebbe fare? Assegnare al puntatore pt l'indirizzo dell'elemento successivo giusto? Prova a postarci la funzione "succ", per vedere se l'errore ? effettivamente l
Ultima modifica effettuata da pierotofy 14/10/05 18:36
Il mio blog: piero.dev
15/10/05 13:01
Rand
Per me l'errore sta qua...
Postato originariamente da sofia_++:


persona* azienda :: ricerca()
{
    persona * pt=punt;



a cosa assegni pt??! ...spero che punt... corrisponda al primo elemento della lista! :-|

e poi Piero... "succ" non ? una funzione!! ...dovrebbe essere semplicemente un puntatore di tipi classe... all'elemento successivo della lista!;)

ps...cmq faresti meglio a postare tutto il programma completo... altrimenti... non possiamo testarlo sui nostri pc (e nemmeno col debugger!!)

ciaoo :k:
aaa
15/10/05 14:18
pierotofy
Postato originariamente da Rand:
e poi Piero... "succ" non ? una funzione!! ...dovrebbe essere semplicemente un puntatore di tipi classe... all'elemento successivo della lista!


A parte che senza il sorgente ? impossibile dirlo, ma per quale motivo ritieni che non pu? essere una funzione che ritorna un puntatore all'elemento successivo della lista?
Ultima modifica effettuata da pierotofy 15/10/05 14:19
Il mio blog: piero.dev
15/10/05 18:11
Ivan
Postato originariamente da Rand:

Per me l'errore sta qua...
Postato originariamente da sofia_++:


persona* azienda :: ricerca()
{
    persona * pt=punt;


a cosa assegni pt??! ...spero che punt... corrisponda al primo elemento della lista! :-|


Concordo con Rand :k:, punt deve essere inizializzato al 1? elemento della lista...
Ultima modifica effettuata da Ivan 15/10/05 18:12
aaa
15/10/05 20:07
Rand
perch? Piero... le funzioni in c++ (anche all'interno delle classi)... hanno alla fine le parentesi tonde (es... o.calc()) 8-|

...miraccomando... tienitelo in testa!! :D

ps... e poi nelle liste... quel nome... ? sicuramente un puntatore all'elemento successivo! (pure io uso "pros";) ;)
aaa
18/10/05 14:54
pierotofy
Upps, vero :-|

Chiedo venia, devo aver passato troppo tempo con il Delphi ultimamente. :asd:
Il mio blog: piero.dev
19/10/05 15:59
Rand
Postato originariamente da pierotofy:

Upps, vero :-|

Chiedo venia, devo aver passato troppo tempo con il Delphi ultimamente. :asd:



eheh :asd: :D
...su... ti perdono! ;) ...ma non ritornare con il c++ all'inizio dopo un po che non lo usi!! 8-|8-|
aaa