Вы находитесь на странице: 1из 6

//***************************************************************//

Funcion Num <-ValidaIngNum (NumCadena)


I,J,Num Es Entero
I=0
Mientras (I < Longitud(NumCadena)) y (J=0) Hacer
I=I+1
Si Subcadena(NumCadena,I,I)>='0' y Subcadena(NumCadena,I,I)<='9' Entonces
J=0
Sino
J=-1
Fin Si
Fin Mientras
Si J=-1 Entonces
Num=-1
Sino
Num=ConvertirANumero(NumCadena)
Fin Si
FinFuncion
//***************************************************************//
Funcion Flag<-Mensaje(M,N,Condicion)//Condicion 0= es 0, 1 Mayor, 2 Menor
Flag Es Logico
Msg Es Caracter
Flag=Falso
Msg=""
Segun Condicion Hacer
0: Si (N=0) Entonces
Msg=" La Cola esta Vacia !"
FinSi
1: Si (N>=M) Entonces
Msg= Concatenar(" Excediste el Numero de Clientes en Cola ",ConvertirATexto(M))
FinSi
2: Si (N<=M) Entonces
Msg= Concatenar(" No Excediste el Numero de Clientes en Cola ",ConvertirATexto(M))
FinSi
Fin Segun
Si (Msg<>"")
Flag=Verdadero
Imprimir ""
Imprimir Msg
Imprimir ""
FinSi
FinFuncion
//***************************************************************//
Funcion NStat<-SeeQueueMed(Arreglo,M,N,Stat)//Retorna Cant N=Nobles P=Plebeyos G=Total
I,NStat Es Entero
NStat=0
Imprimir ""
Imprimir " RELACION DE CLIENTES EN COLA"
Imprimir " ============================"
Imprimir ""
Imprimir " =============================="
Imprimir " UBICACION DATO ESTAMENTO"
Imprimir " =============================="
Si (No Mensaje(M,N,0)) Entonces
Para I=1 Hasta N Hacer
Si (Arreglo(I,2)=STAT)
Imprimir " Posicion ",I," ",Arreglo(I,1)," ",Arreglo(I,2)
NStat=NStat+1
Sino
Si(Stat="G") Entonces
Imprimir " Posicion ",I," ",Arreglo(I,1)," ",Arreglo(I,2)
NStat=NStat+1
FinSi
FinSi
Fin Para
Imprimir " =============================="
Imprimir ""
Imprimir " El Numero de Clientes en Cola es -> ", NStat
Fin Si

FinFuncion
//***************************************************************//
Funcion InQueueMed(Arreglo Por Referencia, M,N Por Referencia, Dato,Stat)
N=N+1
Arreglo(N,1)=Dato
Arreglo(N,2)=Stat
FinFuncion
//***************************************************************//
Funcion OutQueueMed(Arreglo Por Referencia, M,N por Referencia,Stat)
I,Pos es Entero
Si (No Mensaje(M,N,0)) Entonces
Pos=BuscaEstamentoMed(Arreglo,M,N,Stat)
Si (Pos=0) Entonces
Pos=1
FinSi
Si (N=1) Entonces
N=0
Sino
Si (Pos<>N) Entonces
Para I=Pos+1 Hasta N Hacer
Arreglo(I-1,1)=Arreglo(I,1)
Arreglo(I-1,2)=Arreglo(I,2)
Fin Para
FinSi
N=N-1
FinSi

FinSi
FinFuncion
//***************************************************************//
Funcion Pos <- BuscaEstamentoMed(Arreglo,M,N,Stat)
Pos,Flag Es Entero
Pos=0
Flag=0
Si (No Mensaje(M,N,0)) Entonces
Repetir
Pos=Pos+1
Si (Arreglo(Pos,2)=Stat) Entonces
Flag=1
FinSi
Hasta Que (Flag=1) o (Pos>=N)
Si Flag=0 Entonces
Pos=Flag
FinSi
FinSi
FinFuncion
//***************************************************************//
Funcion Autor()
Imprimir ""
Imprimir " ************************************************"
Imprimir " * UNIVERSIDAD NACIONAL FEDERICO VILLARREAL *"
Imprimir " * CARRERA INGENIERIA DE SISTEMAS *"
Imprimir " * ESTRUCTURA DE DATOS *"
Imprimir " * TEMA : COLAS-QUEUE MEDIEVAL-JERARQUIA *"
Imprimir " * *"
Imprimir " * Alumno : Thamar G. Medina La Torre *"
Imprimir " * Codigo Alumno : 2016704606 *"
Imprimir " * Ciclo: II-A *"
Imprimir " * Todos los Derechos de Autor Reservados *"
Imprimir " * *"
Imprimir " ************************************************"
Imprimir ""
FinFuncion
//***************************************************************//
Funcion VerIngreso(N,Cliente,Estamento)
Limpiar Pantalla
Autor()
Imprimir " INGRESO DE DATOS A COLA MEDIEVAL"
Imprimir " ================================"
Imprimir ""
Imprimir " Ingrese el Dato del Cliente N° ",N+1," : " Cliente
Imprimir ""

FinFuncion
//***************************************************************//
Funcion SelStat(N,Cliente,Estamento Por Referencia)
OpcNum Es Entero
OpcCad,Stat Es Caracter
Repetir
VerIngreso(N,Cliente,Estamento Por Referencia)
Imprimir " SELECCION ESTAMENTO"
Imprimir " ==================="
Imprimir ""
Imprimir " [ 1 ] NOBLE (N)"
Imprimir " [ 2 ] PLEBEYO (P)"
Imprimir ""
Imprimir " Ingrese el Estamento del Cliente :-" Sin Saltar; Leer OpcCad
OpcNum=ValidaIngNum(OpcCad)
Hasta Que (OpcNum>0) y (OpcNum<3)
Segun OpcNum Hacer
1: Estamento="N"
2: Estamento="P"
Fin Segun
VerIngreso(N,Cliente,Estamento)
Imprimir ""
Imprimir " Ingreso el Estatus del Cliente N° ",N+1," : ",Estamento
Imprimir ""
FinFuncion
//***************************************************************//
Funcion MostrarMenu()
Limpiar Pantalla
Autor()
Imprimir " COLAS /QUEUE MEDIEVAL"
Imprimir " ====================="
Imprimir ""
Imprimir " [ 1 ] Agregrar Cliente (Encolar)"
Imprimir " [ 2 ] Atender Cliente (Desencolar)"
Imprimir " [ 3 ] Mostrar Clientes"
Imprimir " [ 4 ] Mostrar Clientes Por Estamento"
Imprimir " [ 5 ] Mostrar Clientes Nobles"
Imprimir " [ 6 ] Mostrar Clientes Plebeyos"
Imprimir " [ 0 ] Salir"
FinFuncion
//***************************************************************//
Proceso ColaQueue
M,N,OpcNum,NCliente,Pos Es Entero
ColaMed,NumCad,OpcCad,Cliente,Estamento Es Caracter
Repetir
Limpiar Pantalla
Autor()
Imprimir ""
Imprimir " Cuantos Clientes piensa Atender: " Sin Saltar; Leer NumCad
M=ValidaIngNum(NumCad)
Hasta Que (M>0) y (M<100)
Dimension ColaMed(M,2)
N=0
Repetir
Limpiar Pantalla
MostrarMenu()
Repetir
Imprimir ""
Imprimir " Ingrese Opcion Deseada # -" Sin Saltar; Leer OpcCad
OpcNum=ValidaIngNum(OpcCad)
Hasta Que ((OpcNum>=0) y (OpcNum<7))
Segun OpcNum Hacer
1: Repetir
Limpiar Pantalla
Autor()
Imprimir " INGRESO DE DATOS A COLA MEDIEVAL"
Imprimir " ================================"
Imprimir ""
Si ( N<M ) Entonces
Imprimir ""
Imprimir " Ingrese el Dato del Cliente N° ",N+1," : " Sin Saltar; Leer
Cliente Sin Saltar
Imprimir ""
SelStat(N,Cliente,Estamento)
InQueueMed(ColaMed,M,N,Cliente,Estamento)
Sino
Imprimir ""
Imprimir " Excediste el Numero de Clientes en Cola ",M
Imprimir ""
OpcCad="N"
Esperar Tecla
FinSi
Si (OpcCad<>"N")Entonces
Imprimir ""
Imprimir " Deseas Insertar Otro Cliente en Cola " Sin Saltar; Leer
OpcCad
Imprimir ""
FinSi
Hasta Que ( Mayusculas(OpcCad)="N" )
NCliente=SeeQueueMed(ColaMed,M,N,"G")
Esperar Tecla
2: Repetir
Limpiar Pantalla
Autor()
Imprimir " ATENCION DE CLIENTES EN COLA MEDIEVAL"
Imprimir " ====================================="
Si (No Mensaje(M,N,0)) Entonces
Pos=BuscaEstamentoMed(ColaMed,M,N,"N")
Si (Pos=0) //Si No Hay Nobles atiendo a Plebeyos
Cliente=ColaMed(Pos+1,1)
Estamento=ColaMed(Pos+1,2)
Sino //Si encuentro un Noble Lo Atiendo Primero
Cliente=ColaMed(Pos,1)
Estamento=ColaMed(Pos,2)
FinSi
Imprimir ""
Imprimir "Elimino Cliente ",Cliente," - ",Estamento," y Quedan ",N-1,"
Clientes en Espera"
Imprimir ""
OutQueueMed(ColaMed,M,N,"N")
Imprimir " Deseas Atender Otro Cliente en Cola :" Sin Saltar; Leer
OpcCad
Sino
OpcCad="N"
FinSi
Hasta Que ( Mayusculas(OpcCad)="N" )
NCliente=SeeQueueMed(ColaMed,M,N,"G")
Esperar Tecla
3: Si (No Mensaje(M,N,0)) Entonces
Imprimir ""
NCliente=SeeQueueMed(ColaMed,M,N,"G")
Finsi
Esperar Tecla
4: Limpiar Pantalla
Autor()
Imprimir " RELACION GENERAL EN COLA"
Imprimir " ========================"
Si (No Mensaje(M,N,0)) Entonces
Imprimir ""
NCLiente=SeeQueueMed(ColaMed,M,N,"G")
Finsi
Esperar Tecla
5: Limpiar Pantalla
Autor()
Imprimir " RELACION DE NOBLES EN COLA"
Imprimir " =========================="
Si (No Mensaje(M,N,0)) Entonces
Imprimir ""
NCLiente=SeeQueueMed(ColaMed,M,N,"N")
Finsi
Esperar Tecla
6: Limpiar Pantalla
Autor()
Imprimir " RELACION DE PLEBEYOS EN COLA"
Imprimir " ============================"
Si (No Mensaje(M,N,0)) Entonces
Imprimir ""
NCLiente=SeeQueueMed(ColaMed,M,N,"P")
Finsi
Esperar Tecla
FinSegun
Hasta Que (OpcNum=0)
FinProceso

Вам также может понравиться