PDA

Visualizza la versione completa : [C++] putatori a vettori di struct e vettori di puntatori


bako
14-12-2004, 15:59
devo riuscire a costruire un vettore di puntatori che punti alle celle di un determinato array di struct
come si fa?
si può far puntare la cella dell'array ad un solo campo della struct?
vi posto qui parte del codice


struct lemma {
char italiano[128];
char inglese[128];
};
lemma lemmi[1000];
int *italiano[1000];
int *inglese[1000];
//questa parte qui nn va
for(int i=0;i<tot;i++){
italiano[i]= ??
inglese[i]= ??
}


io pensavo di far puntare i vettori di puntatori (*italiano,*inglese) ai rispettivi campi del vettore di struct (*italiano[1] punta a lemmi[1].italiano) ... in modo poi da poter ordinare i vettori di puntatori e lasciare inalterato il vettore di struct..
spero di essere stato chiaro..

Iena87
14-12-2004, 16:26
Io adesso adesso ho iniziato con le struct, ma se scrivi


for(int i=0;i<tot;i++){
italiano[i]=&lemmi[i];
inglese[i]=&lemmi[i];
}


Non va?

bako
14-12-2004, 16:30
Originariamente inviato da Iena87
Io adesso adesso ho iniziato con le struct, ma se scrivi


for(int i=0;i<tot;i++){
italiano[i]=&lemmi[i];
inglese[i]=&lemmi[i];
}


Non va?

e poi come stampo i campi?

bako
14-12-2004, 17:16
ok questo l'ho risolto bastava mettere ->

adesso ho un altro probelema .. come lo ordino?


void quicksortita (lemma *v[],int primo, int ultimo){
if (primo<ultimo) {
int p=primo,u=ultimo+1;
char pivot[128];
strcpy(pivot,v[primo]->italiano); //la seconda volta da un errore qui!
do {
while (v[++p]->italiano<pivot);
while (v[--u]->italiano>pivot);
if (p<u) swap(v[p],v[u]);
} while(p<u);
swap(v[primo],v[u]);
quicksortita(v,primo,u-1);
quicksortita(v,u+1,ultimo);
}
}


come la faccio la swap ? così void swap(lemma & v1,lemma & v2); ?

Loading