PDA

Visualizza la versione completa : [C++] Info puntatori


Salvatore_91
20-11-2008, 19:11
Ciao.
Ho un problema, io vorrei memorizzare in un puntatore qualsiasi, l'indirizzo di un nodo qualsiasi. So che possibile. Ma non ci riesco.
Io scrivo cos:


#include <iostream>
using namespace std;
int *x,k;
int main()
{
struct lista
{
string nome;
string cognome;
int eta;
struct lista *punt;
};
cout << "Inserisci il numero di nodi da creare (min 3) = ";
cin >>k;
lista p;
cout <<y<< ") Inserisci il nome = ";
cin >> p.nome;
cout <<y<< ") Inserisci il cognome = ";
cin >> p.cognome;
cout <<y<< ") Inserisci l'eta = ";
cin >> p.eta;

lista q;
p.punt =&q;
y++;
cout <<y<< ") Inserisci il nome = ";
cin >> q.nome;
cout <<y<< ") Inserisci il cognome = ";
cin >> q.cognome;
cout <<y<< ") Inserisci l'eta = ";
cin >> q.eta;
*x=q; //qui mi da errore
.
.
.

system("pause");
}

MI SAPETE AIUTARE?

oregon
20-11-2008, 19:20
Originariamente inviato da Salvatore_91
MI SAPETE AIUTARE?

Ma tu, sai spiegare qual e' il tuo problema?

Se non lo sai fare, non si puo' darti nessun aiuto ...

Nella riga in cui hai l'errore

*x=q; //qui mi da errore

stai tentando di assegnare "una struttura lista" ad un "puntatore ad intero" ... cosa c'entra?

Se vuoi usare un "puntatore ad un elemento lista" a destra devi avere un "puntatore ad un elemento lista" come

&q

e a sinistra devi avere "una variabile di tipo puntatore ad un elemento lista" ovvero una

lista *x;

e quindi potrai scrivere

x=&q;

Come ti ho detto nel thread simile che avevi aperto in precedenza, se non studi benei puntatori e quel link che ti avevo proposto, mi dispiace per te, ma non capirai mai nulla di questo argomento ... Un suggerimento da un forum non basta ...

Salvatore_91
20-11-2008, 19:40
E se voglio conservare in un "puntatore ad un elemento lista" il campo puntatore di un nodo qualsiasi di "lista"?

oregon
20-11-2008, 19:53
Perche' non provi con un po' di ragionamento ...?

x=q.punt;

Salvatore_91
20-11-2008, 20:08
e... infatti te l'ho chiesto perche dopo poi quando voglio collegare i nodi, mi da errore:


lista *x;
x=q.punt;

do
{
lista r;
r=&x;
x=r.punt;
y++;
cout <<y<< ") Inserisci il nome = ";
cin >> r.nome;
cout <<y<< ") Inserisci il cognome = ";
cin >> r.cognome;
cout <<y<< ") Inserisci l'eta = ";
cin >> r.eta;
}
while(y+1<k);

oregon
20-11-2008, 20:12
Scusa Salvatore ... ma quale errore ? In quale riga ?

Il codice che hai mostrato (te lo avevo detto prima) sbagliato ed inutile correggerlo perche' non ha senso ...

Per creare una lista collegata devi vedere l'esempio scritto in C dal link che piu' volte ti ho segnalato ...

Salvatore_91
20-11-2008, 20:15
Quel link ke mi hai dato fa esempi in PASCAL.
cmq l'errore me lo da sulla riga:
r=&x; ed : no match for 'operator=' in 'r = &x'

oregon
20-11-2008, 20:21
Originariamente inviato da Salvatore_91
Quel link ke mi hai dato fa esempi in PASCAL.

Guarda bene ... cerca dove c'e' scritto

Implementazione nei linguaggi

e quindi

Di seguito vi e un esempio completo in C:




cmq l'errore me lo da sulla riga:
r=&x; ed : no match for 'operator=' in 'r = &x'

Ovvio ... r e' un elemento della lista e &x e' un puntatore a puntatore ad un elemento della lista ... non c'entra assolutamente nulla.

Questa riga non la scriveresti se avessi una buona conoscenza dei puntatori ... ecco perche' ti rinnovo l'invito a studiare i puntatori se vuoi scrivere programmi del genere ... altrimenti prova con programmi piu' semplici.

Salvatore_91
20-11-2008, 20:23
mi ridici piu precisamente il link?

oregon
20-11-2008, 20:46
Perche' "piu' precisamente" ??

Il link e'

http://it.wikipedia.org/wiki/Lista_concatenata

Loading