miércoles, 6 de diciembre de 2017

vectores 

clase de ordenamiento en lpp

/*
APLICACION QUE PERMITA REGISTRAR A VARIOS DOCENTES DE UNA UNIVERSIDAD.
SE DEBE REGISTRAR SUS NOMBRES, LA ESCUELA DONDE ENSEÑAN,
LAS HORAS DICTADAS Y SU VALOR HORA (PRECIO)
NO SE SABE DE MANERA PREDETERMINADA CUANTOS DOCENTES SON.
SE REQUIERE:
1) LISTADO DE DOCENTES CON TODOS SUS DATOS
2) LISTADO ORDENADO ALFABETICAMENTE
3) LISTADO ORDENADO DESCENDENTEMENTE POR SUELDO
4) LISTADO ORDENADO ALFABETICAMENTE POR ESCUELA
5) LISTAR LOS DOCENTES DE UNA ESCUELA ESPECÍFICA
6) LISTAR LOS DOCENTES CUYO SUELDO ES SUPERIOR A UN VALOR DADO
7) HALLAR EL SUELDO MÁXIMO
8) HALLAR EL SUELDO MINIMO
9) CALCULAR EL SUELDO PROMEDIO DE LOS DOCENTES DE MEDICINA
10) CALCULAR EL SUELDO PROMEDIO DE LOS DOCENTES DE ADMINISTRACION
*/
//--- DECLARACION DEL REGISTRO ---
REGISTRO REG_DOCENTE
CADENA[30] NOMBRE
CADENA[30] ESCUELA
ENTERO HORAS
REAL VALORH //EL VALOR QUE SE LE PAGA POR HORA
REAL SUELDO //ES UN CAMPO CALCULADO
FIN REGISTRO
//--- VARIABLES DEL MODULO PRINCIPAL ---
ARREGLO[200] DE REG_DOCENTE VDOCENTES
CARACTER OPCION
ENTERO N
CADENA[30] ESCUELAREF
// --- SUBRUTINAS ---
PROCEDIMIENTO MENU(VAR CARACTER OPCION)
INICIO
LLAMAR CUADRO(18,1,68,23,14)//14 AMARILLO
LLAMAR POSICIONAR_CURSOR(25,3)
ESCRIBA "*** APLICACION DE DOCENTES ***"
LLAMAR POSICIONAR_CURSOR(20,4)
ESCRIBA "================================="
LLAMAR POSICIONAR_CURSOR(20,5)
ESCRIBA "A. INGRESAR NUEVO DOCENTE"
LLAMAR POSICIONAR_CURSOR(20,6)
ESCRIBA "B. LISTADO GENERAL DE DOCENTES"
LLAMAR POSICIONAR_CURSOR(20,7)
ESCRIBA "C. LISTADO ORDENADO ALFABETICAMENTE"
LLAMAR POSICIONAR_CURSOR(20,8)
ESCRIBA "D. LISTADO ORDENADO DESC. POR SUELDO"
LLAMAR POSICIONAR_CURSOR(20,9)
ESCRIBA "E. LISTADO ALFABETICO POR ESCUELA"
LLAMAR POSICIONAR_CURSOR(20,10)
ESCRIBA "F. LISTADO DE DOCENTES  POR ESCUELA ESPECIFICA"
LLAMAR POSICIONAR_CURSOR(20,16)
ESCRIBA "Z. SALIR"
LLAMAR POSICIONAR_CURSOR(20,17)
ESCRIBA "INGRESE SU OPCION: "
LEA OPCION
FIN
//-----------------------------------
PROCEDIMIENTO CUADRO(ENTERO X1, ENTERO Y1, ENTERO X2, ENTERO Y2, ENTERO COLOR)
ENTERO J
INICIO
LLAMAR COLOR_TEXTO(COLOR)
//DIBUJANDO LAS LINEAS HORIZONTALES
PARA J<- X1 HASTA X2 HAGA
LLAMAR POSICIONAR_CURSOR(J, Y1)
ESCRIBA CAR(178)
LLAMAR POSICIONAR_CURSOR(J, Y2)
ESCRIBA CAR(178)
FIN PARA
//DIBUJANDO LAS LINEAS VERTICALES
PARA J<- Y1 HASTA Y2 HAGA
LLAMAR POSICIONAR_CURSOR(X1, J)
ESCRIBA CAR(178)
LLAMAR POSICIONAR_CURSOR(X2,J)
ESCRIBA CAR(178)
FIN PARA
LLAMAR COLOR_TEXTO(15)//15 BLANCO
FIN
//----------------------------------------------
PROCEDIMIENTO INGRESAR_DOCENTE(VAR ENTERO N, VAR ARREGLO[200] DE REG_DOCENTE VDOCENTES)
//PERMITE AGREGAR UN NUEVO DOCENTE AL VECTOR "VDOCENTES"
INICIO
N <- N+1
LLAMAR CUADRO(3,3,50,12,11)//11 CELESTE
LLAMAR POSICIONAR_CURSOR(5,5)
ESCRIBA "NOMBRE: "
LEA VDOCENTES[N].NOMBRE
LLAMAR POSICIONAR_CURSOR(5,6)
ESCRIBA "ESCUELA: "
LEA VDOCENTES[N].ESCUELA
LLAMAR POSICIONAR_CURSOR(5,7)
ESCRIBA "TOTAL HORAS: "
LEA VDOCENTES[N].HORAS
LLAMAR POSICIONAR_CURSOR(5,8)
ESCRIBA "VALOR HORA (S/.): "
LEA VDOCENTES[N].VALORH
//CALCULANDO EL SUELDO
VDOCENTES[N].SUELDO <- VDOCENTES[N].HORAS*VDOCENTES[N].VALORH
//MOSTRANDO EL SUELDO EN PANTALLA
LLAMAR POSICIONAR_CURSOR(5,9)
ESCRIBA "SUELDO (S/.): ", VDOCENTES[N].SUELDO
FIN
//-----------------------------------------------
PROCEDIMIENTO LISTADO_GENERAL( ENTERO N, ARREGLO[200] DE REG_DOCENTE VDOCENTES)
ENTERO K, J
INICIO
llamar CUADRO(2,2,79,22,11)
//CABECERA
LLAMAR POSICIONAR_CURSOR(3,4)
ESCRIBA "NRO"
LLAMAR POSICIONAR_CURSOR(7,4)
ESCRIBA "DOCENTE"
LLAMAR POSICIONAR_CURSOR(30,4)
ESCRIBA "ESCUELA"
LLAMAR POSICIONAR_CURSOR(42,4)
ESCRIBA "HORAS"
LLAMAR POSICIONAR_CURSOR(52,4)
ESCRIBA "VALORH"
LLAMAR POSICIONAR_CURSOR(62,4)
ESCRIBA "SUELDO (S/.)"
LLAMAR POSICIONAR_CURSOR(3,5)
escriba "========================================================="
//imprimiendo los datos
K<- 1//NRO DE ORDEN
PARA J<- 1 HASTA N HAGA
LLAMAR POSICIONAR_CURSOR(3,K+5)
ESCRIBA K, ".-"
LLAMAR POSICIONAR_CURSOR(7,K+5)
ESCRIBA VDOCENTES[J].NOMBRE
LLAMAR POSICIONAR_CURSOR(30,K+5)
ESCRIBA VDOCENTES[J].ESCUELA
LLAMAR POSICIONAR_CURSOR(42,K+5)
ESCRIBA VDOCENTES[J].HORAS
LLAMAR POSICIONAR_CURSOR(52,K+5)
ESCRIBA VDOCENTES[J].VALORH
LLAMAR POSICIONAR_CURSOR(62,K+5)
ESCRIBA VDOCENTES[J].SUELDO
K <- K+1
FIN PARA
FIN
//-------------------------------------------
PROCEDIMIENTO INICIALIZAR(VAR ENTERO N, VAR ARREGLO[200] DE REG_DOCENTE VDOCENTES)
//CARGAR DATOS DE EJEMPLO EN EL VECTOR
INICIO
VDOCENTES[1].NOMBRE <- "CASTRO LOPEZ IVAN"
VDOCENTES[1].ESCUELA <- "SISTEMAS"
VDOCENTES[1].HORAS <- 200
VDOCENTES[1].VALORH <- 20
VDOCENTES[1].SUELDO <- 4000
VDOCENTES[2].NOMBRE <- "ALVA CELI MIRIAN"
VDOCENTES[2].ESCUELA <- "MEDICINA"
VDOCENTES[2].HORAS <- 150
VDOCENTES[2].VALORH <- 50
VDOCENTES[2].SUELDO <- 7500
VDOCENTES[3].NOMBRE <- "DURAND LOPEZ MARCO"
VDOCENTES[3].ESCUELA <- "SISTEMAS"
VDOCENTES[3].HORAS <- 100
VDOCENTES[3].VALORH <- 25
VDOCENTES[3].SUELDO <- 2500
VDOCENTES[4].NOMBRE <- "DURAND JUAREZ ANA"
VDOCENTES[4].ESCUELA <- "CIVIL"
VDOCENTES[4].HORAS <- 200
VDOCENTES[4].VALORH <- 25
VDOCENTES[4].SUELDO <- 5000
VDOCENTES[5].NOMBRE <- "MORE MORE JAIR"
VDOCENTES[5].ESCUELA <- "MEDICINA"
VDOCENTES[5].HORAS <- 200
VDOCENTES[5].VALORH <- 60
VDOCENTES[5].SUELDO <- 12000
N <- 5 //SE ACTUALIZA N
FIN
//--ORDENA ALFABETICAMENTE POR DOCENTE----
PROCEDIMIENTO ORDENAR_ALFAB(ENTERO N, VAR ARREGLO [200] DE REG_DOCENTE VDOCENTES)

BOOLEANO ORDENADO
REG_DOCENTE AUX 
ENTERO J 
INICIO
      ORDENADO <- FALSO
      MIENTRAS (ORDENADO = FALSO) HAGA 
         ORDENADO <- VERDADERO
         PARA J <- 1 HASTA N-1 HAGA 
              SI (VDOCENTES[J].NOMBRE > VDOCENTES[J+1].NOMBRE) ENTONCES
              AUX <- VDOCENTES[J]
              VDOCENTES[J] <- VDOCENTES[J+1]
              VDOCENTES[J+1] <- AUX
              ORDENADO <- FALSO 
              FIN SI  
         FIN PARA
      FIN MIENTRAS 
FIN
//--OREDENAR SUELDO DES-------
PROCEDIMIENTO ORDENAR_SUELDO_DES(ENTERO N, VAR ARREGLO [200] DE REG_DOCENTE VDOCENTES)

BOOLEANO ORDENADO
REG_DOCENTE AUX 
ENTERO J 
INICIO
      ORDENADO <- FALSO
      MIENTRAS (ORDENADO = FALSO) HAGA 
         ORDENADO <- VERDADERO
         PARA J <- 1 HASTA N-1 HAGA 
              SI (VDOCENTES[J].SUELDO < VDOCENTES[J+1].SUELDO) ENTONCES
              AUX <- VDOCENTES[J]
              VDOCENTES[J] <- VDOCENTES[J+1]
              VDOCENTES[J+1] <- AUX
              ORDENADO <- FALSO 
              FIN SI  
         FIN PARA
      FIN MIENTRAS 
FIN             
//------ORDENAR ALFABETICAMENTE POR ESCUELA ----
PROCEDIMIENTO ORDENAR_ESCUELA(ENTERO N, VAR ARREGLO [200] DE REG_DOCENTE VDOCENTES)

BOOLEANO ORDENADO
REG_DOCENTE AUX 
ENTERO J 
INICIO
      ORDENADO <- FALSO
      MIENTRAS (ORDENADO = FALSO) HAGA 
         ORDENADO <- VERDADERO
         PARA J <- 1 HASTA N-1 HAGA 
              SI (VDOCENTES[J].ESCUELA  > VDOCENTES[J+1].ESCUELA) ENTONCES
              AUX <- VDOCENTES[J]
              VDOCENTES[J] <- VDOCENTES[J+1]
              VDOCENTES[J+1] <- AUX
              ORDENADO <- FALSO 
              FIN SI  
         FIN PARA
      FIN MIENTRAS 
FIN
////------------------
PROCEDIMIENTO LISTADO_SEGUN_ESCUELA( ENTERO N, ARREGLO[200] DE REG_DOCENTE VDOCENTES, CADENA [30] ESCUELAREF )//MUESTRA REGISTRSO QUE COINCIDEN CON LA ESCUELAREF

ENTERO K, J

INICIO
LLAMAR CUADRO(2,2,79,22,11)
//CABECERA
LLAMAR POSICIONAR_CURSOR(3,4)
ESCRIBA "NRO"
LLAMAR POSICIONAR_CURSOR(7,4)
ESCRIBA "DOCENTE"
LLAMAR POSICIONAR_CURSOR(30,4)
ESCRIBA "ESCUELA"
LLAMAR POSICIONAR_CURSOR(42,4)
ESCRIBA "HORAS"
LLAMAR POSICIONAR_CURSOR(52,4)
ESCRIBA "VALORH"
LLAMAR POSICIONAR_CURSOR(62,4)
ESCRIBA "SUELDO (S/.)"
LLAMAR POSICIONAR_CURSOR(3,5)
escriba "========================================================================"
//imprimiendo los datos
K<- 1//NRO DE ORDEN
PARA J<- 1 HASTA N HAGA
   SI (VDOCENTES[J].ESCUELA = ESCUELAREF)ENTONCES
LLAMAR POSICIONAR_CURSOR(3,K+5)
ESCRIBA K, ".-"
LLAMAR POSICIONAR_CURSOR(7,K+5)
ESCRIBA VDOCENTES[J].NOMBRE
LLAMAR POSICIONAR_CURSOR(30,K+5)
ESCRIBA VDOCENTES[J].ESCUELA
LLAMAR POSICIONAR_CURSOR(42,K+5)
ESCRIBA VDOCENTES[J].HORAS
LLAMAR POSICIONAR_CURSOR(52,K+5)
ESCRIBA VDOCENTES[J].VALORH
LLAMAR POSICIONAR_CURSOR(62,K+5)
ESCRIBA VDOCENTES[J].SUELDO
K <- K+1
 FIN SI
FIN PARA
FIN             
     
//----------- MODULO PRINCIPAL -------------
INICIO
OPCION <- 'X'
N <- 0
LLAMAR INICIALIZAR(N, VDOCENTES)
LLAMAR LIMPIAR_PANTALLA()
LLAMAR COLOR_TEXTO(15) //BLANCO COLOR INICIAL
MIENTRAS (OPCION <> 'Z') Y (OPCION <>'z') HAGA
LLAMAR LIMPIAR_PANTALLA()
LLAMAR MENU(OPCION)
LLAMAR LIMPIAR_PANTALLA()
CASO OPCION
'A','a': ESCRIBA "A. INGRESAR NUEVO DOCENTE"
LLAMAR INGRESAR_DOCENTE(N,VDOCENTES)
    
'B','b': ESCRIBA "B. LISTADO GENERAL DE DOCENTES"
LLAMAR LISTADO_GENERAL(N,VDOCENTES)
    
'C','c': ESCRIBA "C. LISTADO OREDENADO ALFABETICAMENTE "
        LLAMAR ORDENAR_ALFAB(N,VDOCENTES)
        LLAMAR LISTADO_GENERAL(N,VDOCENTES)
        
'D','d': ESCRIBA "D. LISTADO ORDENADO DESC. POR SUELDO"
        LLAMAR ORDENAR_SUELDO_DES(N,VDOCENTES)
        LLAMAR LISTADO_GENERAL(N,VDOCENTES)
        
'E','e': ESCRIBA "E. LISTADO ALFABETICO POR ESCUELA"
        LLAMAR ORDENAR_ESCUELA(N,VDOCENTES)
        LLAMAR LISTADO_GENERAL(N,VDOCENTES)
        
   'F','f': ESCRIBA "F.LISTADO DE DOCENTES  POR ESCUELA ESPECIFICA"
            LLAMAR LISTADO_SEGUN_ESCUELA(N,VDOCENTES,"MEDICINA")
            LLAMAR OBTENER_CARACTER()
            LLAMAR LIMPIAR_PANTALLA()
            LLAMAR LISTADO_SEGUN_ESCUELA(N,VDOCENTES,"SISTEMAS")
            LLAMAR OBTENER_CARACTER()
            LLAMAR LIMPIAR_PANTALLA()
            ESCRIBA "INGRESE EL NOMBRE DE LA ESCUELA:"
            LEA ESCUELAREF
            LLAMAR LISTADO_SEGUN_ESCUELA(N,VDOCENTES,ESCUELAREF)
            
            
         
'I','i': ESCRIBA "I"
'I','i': ESCRIBA "I"
'I','i': ESCRIBA "I"
'I','i': ESCRIBA "I"
'I','i': ESCRIBA "I"
     
        
FIN CASO
LLAMAR POSICIONAR_CURSOR(4,20)
ESCRIBA "POR FAVOR, PRESIONE CUALQUIER TECLA PARA CONTINUAR ..."
LLAMAR OBTENER_CARACTER()//PARA UNA PAUSA
FIN MIENTRAS
LLAMAR POSICIONAR_CURSOR(32,10)
ESCRIBA "GRACIAS. HASTA PRONTO!"
FIN

4 comentarios:

MENU DE ACCIONES EN JAVA

MENU DE ACCIONES EN JAVA ----------------------------------------------------------------- package menudeacciones; import java.util.S...