Quella while non ha senso ... correggi così
void OrdinaNominativi()
{
int n=1; // Flag
int i;
struct NOMINATIVI N;
while(n) // Ripeti se almeno uno scambio
{
n=0; // Nessuno scambio
for(i=0; i<MaxNominativi-1; i++) // Fino a MaxNominativi-1
{
if(strcmp(Nominativo[i].Cognome,Nominativo[i+1].Cognome)==0)
{
if(strcmp(Nominativo[i].Nome,Nominativo[i+1].Nome)>0)
{
N=Nominativo[i];
Nominativo[i]=Nominativo[i+1];
Nominativo[i+1]=N;
n++; // Almeno uno scambio
}
}
if(strcmp(Nominativo[i].Cognome,Nominativo[i+1].Cognome)>0)
{
N=Nominativo[i];
Nominativo[i]=Nominativo[i+1];
Nominativo[i+1]=N;
n++; // Almeno uno scambio
}
}
}
}