Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    [C++] putatori a vettori di struct e vettori di puntatori

    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
    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..

  2. #2
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Io adesso adesso ho iniziato con le struct, ma se scrivi

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

    Non va?

  3. #3
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Originariamente inviato da Iena87
    Io adesso adesso ho iniziato con le struct, ma se scrivi

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

    Non va?
    e poi come stampo i campi?

  4. #4
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    ok questo l'ho risolto bastava mettere ->

    adesso ho un altro probelema .. come lo ordino?
    codice:
    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); ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.