Non avevo capito bene quello che dovevi fare !

comunque visto che nell'array di int avrai numeri che indicano secondo terzo carattere
tipo 2
se vuoi prendere il secondo carattere dell'array di char che parte da zero devi fare 2-1

Prova cosi sempre che abbia capito cosa devi fare !
un po capisco poco io un po ti spieghi male tu

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]-1); // indica il valore dell'array vet[] in posizione i -1
    }
    dec[i]=0;
    *dimd=i;
 }
Se invece i numeri dell'array int indicano gli indici dell array char va bene come avevi fatto tu
la funzione comunque lo provata e funziona ritorna il carattere che precede nell alfabeto
il carattere contenuto nell array di char nella posizione indicata nell array int