Nelle prime 2 funzioni se ritorni 1 invece di 0, nell'ultima non ti serve nemmeno il confronto "== 0" quando le richiami.Non va perché hai combinato un mezzo casotto...
Prova a implementare partendo da qui:
codice:
codice:int ricerca_lineare(int *nt, int cercato) { //cerca un carattere nell'array while(*nt != NULL) { if(*nt == cercato) return 0; nt++; } return -1; } int scorri_alfabeto (char *ch) { //incrementa il carattere if ((*ch < 'Z') && (*ch > 'A')) { (*ch)++; return 0; } return -1; } char trova_nt_libero(char nt1[]) { //trova la prima lettera "libera" char lettera = 'A'; while (scorri_alfabeto(&lettera) == 0) { if (ricerca_lineare(nt1, lettera) == 0) return lettera; } return '\0'; }