Ho provato a buttare già qualcosa.... che ne dite? può andar bene? non mi compila ma penso che la logica ci sia no? magari c'è qualche piccolo errore..

codice:
bool distanzaAlfabetica(char a[], int dim){
     if(dim%2 != 0) //per far terminare subito la funzione in caso di stringa dispari
     return false;
     
     if(a[i]=='\0') //passo base
     return true;
     
     int distanza= a[0] - a[dim/2];
     if(a[i] - a[dim/2+i] != distanza) //passo ricorsivo
     return false;
     
     distanzaAlfabetica(a[], dim, i+1);
     
}//chiusura funzione
In pratica ..spiego quello che ho fatto:
Ho messo la differenza tra i due caratteri che dovrebbero formare la coppia(il primo carattere della stringa e il primo carattere della metà della stringa) in una variabile intera chiamata distanza. Poi ho fatto una verifica: se tutte le coppie successive hanno la stessa "distanza" la funzione restituisce true altrimenti false.