Una osservazione, perché dichiari
con lunghezza maxdimcodice:typedef int vettore [maxdim]; typedef int matrice [maxdim][maxdim];
mentre
con lunghezza maxdim+1 ?codice:typedef char stringa [maxdim+1];
Sarebbe più razionale fossere tutti con la stessa lunghezza, maxdim oppure maxdim+1
Inoltre in nessuna parte del codice effettui i controlli necessari affinchè questi limiti non vengano superati.