Ho due vettori:uno contenente degli interi, l'altro dei caratteri. Devo mettere in ogni cella di terzo vettore il carattere precedente in ordine lessicografico a quello presente nel vettore di caratteri il cui indice è indicato dal vettore di interi.
Per esempio:
Il vettore di interi è: 3 9 1
Il vettore di caratteri è: b c d e f g h i l
quindi nel terzo vettore andrà: c i a
Il codice che ho scritto per fare questo è:
Ma purtroppo non viene scalato il carattere in ordine lessicografico, o meglio, viene scalato come SE considerassimo il carattere successivoa quello effettivo(infatti se metto -2 invece di -1 ottengo i caratteri cercati). In pratica:codice:void elabora(char dec[],int *dimd, int vet[],int dimv,char mat[]) { int i; i=0; for(i=0;i<dimv;i++) { dec[i]=(mat[vet[i]]-1); } *dimd=i; }
Il main è:
codice:int dimv,dimm,dimd,i; int vet[100]; char mat[50],dec[100]; lettura(vet,&dimv,mat,&dimm); if(dimv==-1) { printf("Errore nell'apertura di uno dei due file\n"); } else { printf("Stampa vettore numerico\n"); for(i=0;i<dimv;i++) { printf("%d ", vet[i]); } printf("\n"); printf("Stampa vettore di caratteri\n"); for(i=0;i<dimm;i++) { printf("%c", mat[i]); } elabora(dec,&dimd,vet,dimv,mat); printf("\n"); printf("Stampa risultato(invece di casa)\n"); for(i=0;i<dimd;i++) { printf("%c",dec[i]); } printf("\n"); }


Rispondi quotando