...una invitación a entrar en el maravilloso mundo de la programación...
 Portada      Noticias      Descargar      Documentación      Foros    


OrdenaLista

Pseudocódigo: Flexible...   Estricto...   |   Diagramas de flujo: Clásico...   Nassi-Schneiderman...   |   Más ejemplos...

//   Se ingresa una lista de nombres (la lista termina
// cuando se ingresa un nombre en blanco) no permitiendo
// ingresar repetidos y luego se ordena y muestra

Proceso OrdenaLista
    
    Definir nombre,lista,aux Como Cadenas;
    Definir se_repite Como Logico;
    Definir cant,i,j,pos_menor Como Enteros;
    Dimension lista[200];
    
    Escribir "Ingrese los nombres (enter en blanco para terminar):";
    
    // leer la lista
    cant<-0;
    Leer nombre;
    Mientras nombre<>"" Hacer
        lista[cant]<-nombre;
        cant<-cant+1;
        Repetir // leer un nombre y ver que no este ya en la lista
            Leer nombre;
            se_repite<-Falso;
            Para i<-0 Hasta cant-1 Hacer
                Si nombre=lista[i] Entonces
                    se_repite<-Verdadero;
                FinSi
            FinPara
        Hasta Que ~ se_repite
    FinMientras
    
    // ordenar
    Para i<-0 Hasta cant-2 Hacer
        // busca el menor entre i y cant
        pos_menor<-i;
        Para j<-i+1 Hasta cant-1 Hacer
            Si lista[j]<lista[pos_menor] Entonces
                pos_menor<-j;
            FinSi
        FinPara
        // intercambia el que estaba en i con el menor que encontro
        aux<-lista[i];
        lista[i]<-lista[pos_menor];
        lista[pos_menor]<-aux;
    FinPara    
    
    // mostrar como queda la lista
    Escribir "La lista ordenada es:";
    Para i<-0 Hasta cant-1 Hacer
        Escribir "   ",lista[i];
    FinPara
    
FinProceso


Powered by:   SourceForge.net Logo