Ordinare Nominativi alfabeticamente in C

di il
1 risposte

Ordinare Nominativi alfabeticamente in C

Ciao ragazzi , ho un progetto in c dove devo ordinare i nomi alfabeticamente ma ogni volta che eseguo il debug non sono mai ordinati. Qualcuno puo darmi una mano?
Adesso scrivo la Function:





void OrdinaNominativi()
{ int n=0 ;
int i;


struct NOMINATIVI N;



while(n<MaxNominativi){

for(i=0; i<n-1; i++){

if(strcmp(Nominativo.Cognome,Nominativo[i+1].Cognome)==0)
{

if(strcmp(Nominativo.Nome,Nominativo[i+1].Nome)>0){
N=Nominativo;
Nominativo=Nominativo[i+1];
Nominativo[i+1]=N;

}
}


if(strcmp(Nominativo.Cognome,Nominativo[i+1].Cognome)>0)
{
N=Nominativo;
Nominativo=Nominativo[i+1];
Nominativo[i+1]=N;
}
}
n++;
}

1 Risposte

  • Re: Ordinare Nominativi alfabeticamente in C

    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
    			}
    		}
    	}
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte