[C]Dubbio sull'utilizzo di una struttura.

di Anonimizzato10828 il
2 risposte
Salve. Ho svolto un esercizio che tra le varie richieste mi chiede di inserire un certo numero di parole ed inserirle in una matrice, poi devo affiancare a questa matrice un vettore che riporti il numero di doppie presenti in ogni parola. Vi posto il codice che, premetto, funziona perfettamente


/* dove num_string è una variabile intera  il cui contenuto è stato precedendtemente acquisito e contiene il numero di stringhe da acquisire. i e j sono due indici interi per scorrere la variabile   char matrice[][] che contiene le parole e il vettore di interi vett_dopp[] che contiene il numero di doppie della parola che si trova nella riga i-esima della matrice, nella sua posizione i-esima*/


for(i=0; i<num_string; i++){
       for(j=0; j<strlen(matrice[i])-1; j++){
           if(matrice[i][j]==matrice[i][j+1])
             vett_dopp[i]++;
       }
    }

    for(i=0; i<num_string; i++){
       printf("\n la parola %s contiene %d doppie", matrice[i], vett_dopp[i]);
    }
Un esercizio successivo mi chiede di modifcare la richiesta dell'esercizio precedente, che vi ho sopra descritto, utilizzando una struttura. Vi posto il codice che ho scritto


/*struttura da utilizzare fornita dal testo dell'esercizio*/
typedef struct linea{           
        char parola[M];       
        int ripetizione;
}Linea;

int main()
{
 /*nstr è il numero di parole precedentemente acquisito, i e j sono due indici interi, vett[] è un vettore di tipo Linea*/


            for(i=0; i<nstr; i++){
                     for(j=0; j<strlen(vett[i].parola )- 1; j++){
                            if(vett[i][j].parola == vett[i][j+1].parola){
                            vett[i].ripetizione++;
             printf("\nLa parola %s contiene %d doppie.", vett[i].parola, vett[i].ripetizione);
        }
    }
return 0
}
Il problema è che quando compilo mi viene segnalato l'errore " error: subscripted value is neither array nor pointer" sulla riga dell'if. Io penso di aver capito che non posso scrivere
vett[j].parola. Ma allora come faccio a scorrere il campo parola della struttura alla i-esima riga carattere per carattere per vedere se ci sono doppie?
Spero di aver spiegato il mio problema in modo esaustivo. Saluti,
Francesco

2 Risposte

  • Ciao Francesco,

    Il vettore è monodimensionale per cui l'iterazione la fai con:
    
    vett[i]
    
    poi metti l'elemento:
    
    vett[i].elemento
    
    Se l'elemento trattato è definito come vettore e lo vuoi scorrere:
    
    vett[i].elemento[j]
    
  • Perfetto grazie mille ixamit
Devi accedere o registrarti per scrivere nel forum
2 risposte