Vous êtes sur la page 1sur 23

UNIVERSIDAD NACIONAL DEL SANTA

PRACTICA DE ALGORITMOS II UNIDAD

PILAS

3- Cierto nmero de usuarios, n, envan simultneamente un documento a


la impresora comn, la cual debe determinar su orden de impresin. Las
longitudes de los documentos enviados son l1...ln, siendo li la longitud del
documento enviado por el usuario i (la numeracin de los usuarios es
arbitraria). Suponiendo que el tiempo que se tarda en imprimir un
documento es proporcional a su longitud, Escribir el algoritmo
(Pseudocdigo) que indique el orden ptimo en que se deben imprimir de
manera que se minimice el tiempo medio de espera de cada usuario. El
tiempo de espera del usuario i-simo vendr dado por el orden que haya
establecido la impresora para su documento. Si su documento es el j-simo
en imprimirse, su tiempo de espera ser la suma de los tiempos de
impresin de la j primeros documentos segn ese orden (se incluye el suyo
en la suma). Los usuarios deben estar enterados del tiempo que les tomar
esperar.

PSEUDOCODIGO:

Tamao, tope -1, lon, t, k 0


Mensaje: Ingrese el nmero de usuarios: "
Mientras (k = 0) {
Mensaje: Elija la operacin a realizar:1-Mandar.2-Salir
Si (op = 1) {
Si (tope >= tamao - 1) {
T0
Mensaje:"--- PILA LLENA ---"
} Caso contrario {
Mensaje: Ingrese el nombre del doc: "
Mensaje: Ingrese la long del doc: "

ESTRUCTURA DE DATOS Pgina 1


UNIVERSIDAD NACIONAL DEL SANTA

Tope tope + 1
Pila [tope] doc
Longitud [tope] lon
T0
Para (i = 0; i <= tope; i++) {
T t + longitud[i]
Mensaje: longitud[i] + t + pila[i] "
}
}
} Si no (op = 2) {
Mensaje: Gracias..."
K1
} Caso contrario {
Mensaje: Opcin incorrecta..."
}
}

4- Dados los caracteres (), [], {} y una cadena s; s esta balanceada si tiene
algunos de estos formatos, s=, (String nulo), s= (T), s= [T], s= {T}, s= TU en
donde T y U son cadenas balanceadas (en otras palabras, para cada
parntesis, llave o corchete abierto existe un carcter de cierre
respectivamente). Ejemplo {(a+b) [(c-d) ^2]}. Escribir el algoritmo que use
una pila para ver si es balanceada.

PSEUDOCODIGO:

Mensaje: Ingrese el tamao de la expresin:"


Para (i=0; i<=tamao-1; i++) {
Mensaje: Ingrese el dato "+ i+:"
Pila[i] dato
}
P0

ESTRUCTURA DE DATOS Pgina 2


UNIVERSIDAD NACIONAL DEL SANTA

C0
L0
Com 0
Para (i=0; i<=tamao-1; i++) {
Si (pila[i] = ')) {
p++
}
Si (pila[i] = '( ') {
p--
}
Si (pila[i] = ']') {
c++
}
Si (pila[i] = '[') {
c--
}
Si (pila[i] = '}') {
l++
}
Si (pila[i] = '{') {
l--
}
Si (pila[i] = '"') {
com++
}
Si (pila[i] = '"') {
com--
}
}

Si (c = 0 && p = 0 && l = 0 && com = 0) {


Mensaje: Expresin balanceada...
} Caso contrario {

ESTRUCTURA DE DATOS Pgina 3


UNIVERSIDAD NACIONAL DEL SANTA

Mensaje: "Expresin no balanceada...


}

5- Escribir el algoritmo (Pseudocdigo) que maneje tres pilas de DATOS (A, B


y C) en un solo arreglo implementado como lista enlazada. Las pilas pueden
decrecer o crecer en cada momento, pero el tamao del arreglo no variar. Si
una pila necesita ms espacio solo tiene que tomarlo del arreglo que tiene
15 lugares en funcin a su lista de disponibles, si las 3 pilas completan los
15 lugares entonces se manda un mensaje de pila llena. Al ingresar un dato
se deber leer adems el nombre de pila donde se desea colocarla.
Contemplar la posibilidad de eliminar un dato de cualquier pila, lo que
provoca incrementar la lista de disponibles.

PSEUDOCODIGO:

Tamao, topea -1, topeb -1, topec -1 , k 0


Mensaje: Ingrese el tamao del arreglo: "

Mientras (k = 0) {
Mensaje: Elija la operacin a realizar: 1-Meter.2-Sacar.3-Salir
Si (op= 1) {
Si (topea >= tamao-1 || topeb >= tamao-1 || topec >=
tamao-1) {
Mensaje:"-------- PILA LLENA --------"
} Caso contrario {
Mensaje: Elija la pila a usar: 1-Pila A.2-Pila B.3-Pila C
Si (ope = 1) {
Mensaje: Ingrese dato:"
Si (topec != topeb){
aux2 null
Para (i=topeb+1;i<=topec+1;i++){

ESTRUCTURA DE DATOS Pgina 4


UNIVERSIDAD NACIONAL DEL SANTA

aux pila[i]
Pila[i] aux2
aux2 aux
}
}
Topec topec+1
Si (topeb!= topea) {
aux2 null
Para (i=topea+1; i<=topeb+1; i++){
aux pila[i]
Pila[i] aux2
aux2 aux
}
}
Topeb topeb+1
Topea topea+1
Pila [topea] dato
} Sino (ope = 2) {
Mensaje: Ingrese dato:
Si (topec != topeb){
aux2 null
Para (i=topeb+1; i<=topec+1; i++) {
aux pila[i]
Pila[i] aux2
aux2 aux
}
}
Topec topec+1
Topeb topeb+1
Pila [topeb] dato
} Sino (ope = 3) {
Mensaje: Ingrese dato:"
Topec topec+1

ESTRUCTURA DE DATOS Pgina 5


UNIVERSIDAD NACIONAL DEL SANTA

Pila [topec] dato


} Caso contrario {
Mensaje: Opcin incorrecta...
}
}
}
Sino (op = 2) {
Si (topea = -1 && topeb = -1 && topec = -1) {
Mensaje:"-------- PILA VACIA --------"
} Caso contrario {
Mensaje: Elija la pila a sacar: 1-Pila A.2-Pila B.3-Pila C"
Si (operacin = 1) {
Si (topea = -1) {
Mensaje:"------- PILA 'A' VACIA -----"
} Caso contrario {
Pila [topea] null
Si (topeb != topea){
Para (i=topea+1;i<=topeb;i++){
Pila [i-1] pila[i]
}
Pila [topeb] null
}
Topeb topeb-1
Si (topec!= topeb) {
Para (i=topeb+1; i<=topec;i++){
Pila [i-1] pila[i]
}
Pila [topec] null
}
Topec topec-1
Topea topea-1
}
} Sino (operacin=2) {

ESTRUCTURA DE DATOS Pgina 6


UNIVERSIDAD NACIONAL DEL SANTA

Si (topeb =-1) {
Mensaje:"------- PILA 'B' VACIA -----"
} Caso contrario {
Pila [topeb] null
Si (topec!= topeb) {
Para (i=topeb+1; i<=topec; i++) {
Pila [i-1] pila[i]
}
Pila [topec] null
}
Topec topec-1
topeb topeb-1
}
} Sino (operacin = 3) {
Si (topec = -1) {
Mensaje:"------- PILA 'C' VACIA -----"
} Caso contrario {
Pila [topec] null
topec topec-1
}
} Caso contrario {
Mensaje: Opcin incorrecta...
}
}
} Sino (op = 3) {
Mensaje: Gracias...
K1
} Caso contrario {
Mensaje: Opcin incorrecta...
}
}

ESTRUCTURA DE DATOS Pgina 7


UNIVERSIDAD NACIONAL DEL SANTA

6.1.

+ 2
3

***Infija:

(a+(b^2-c)^(1/2))/(d^(1/3)-e/f)

***Prefija:

[+a^-^b2c/12]/(-^d/13/ef)

/+a^-^b2c/12-^d/13/ef

***Sufijo:

(ab2^c-12/^+)/(d13/^ef/-)

ab2^c-12/^+d13/^ef/-/

6.2.

frenteN=0; frenteE=0; 1N=13;

finN=0; fine=0; 2N=13;

operar(1) eleminar(2) salir(3)..-elegir

si(elegir==1)entonces

Si (finN==1N) entonces

Cola llena

Sino

Leer VALOR

Apto(1) No apto(2) ..-op

Si(op==1)entonces

FinN =fin+1;

CN[fin]=VALOR;

Si(frenteN==0) entonces

ESTRUCTURA DE DATOS Pgina 8


UNIVERSIDAD NACIONAL DEL SANTA

Frente=1;

Fin si

Fin si;

Si (op==2) entonces

Olvido DNI (1) Olvido llenar formulario (2)..-opcin

Si (opcin==1) entonces

Si (finE==2N) entonces

cola especial llena

sino

si ( finE>= 10 && frenteE <= 10) entonces

para( i=finE ; i>=10 ; i---) hacer

CE[i+1]= CE[i];

Fin para

Toque =10;

CE[toque]=VALOR;

FinE=finE+1;

Fin si

si ( finE >= 5 && finE <= 9 && frente <= 5 ) entonces

para( i=finE ; i>=5 ; i---) hacer

CE[i+1]= CE[i];

Fin para

Toque =5;

CE[toque]=VALOR;

FinE=finE+1;

Fin si

Si ( finE <= 4) entonces

finE= finE+1;

ESTRUCTURA DE DATOS Pgina 9


UNIVERSIDAD NACIONAL DEL SANTA

CE[finE]= VALOR;

Si ( frente==0) entonces

FrenteE= 1;

Fin si

Fin si

Fin si

Fin si

Si ( opcin==2 ) entonces

Si ( finE==2N) entoces

Cola especial llena

Sino

finE= finE+1;

CE[finE]=VALOR;

Si ( frente==0 ) entonces

Frente=1;

Fin si

Fin si

Fin si

Fin si

Fin si

Si( elegir == 2) entonces

Donde vas eliminar cola normal( CN) (1) o cola especial(CE)


(2)ELI

Si( ELI==1) entonces

Si ( frenteN==0) entonces

Cola vacia

Sino

ESTRUCTURA DE DATOS Pgina 10


UNIVERSIDAD NACIONAL DEL SANTA

CN[frenteN]= ;

Si (fin==frenteN) entonces

FrenteN=0;

fin=0;

sino

frenteN=frenteN+1;

fin si

fin si

fin si

Si( ELI==2) entonces

Si ( frenteE==0) entonces

Cola vacia

Sino

CN[frenteE]= ;

Si (fin==frenteN) entonces

FrenteN=0;

fin=0;

sino

frenteE= frenteE+1;

fin si

fin si

fin si

fin si

si (elegir == 3) entonces

salir

fin si

ESTRUCTURA DE DATOS Pgina 11


UNIVERSIDAD NACIONAL DEL SANTA

7.

Pila[]={1,2,3,4,5,6,7,8,9,10}

Cola[]={11,12,13,14,15,16,17,18,19,20}

Tope=10

Frente=1

X,y,s=0;

Para (i=1 hasta 10)

//pila

Xpila[tope]

tope--;

//cola

Ycola[frente]

Frente++;

S=s+(x*y)

Fin_Para

Mostrar S

COLAS

3. Considera que palabra es una variable de tipo Cola que contiene la


entrada del usuario por teclado, P una pila de caracteres y el siguiente
algoritmo:

Mientras haya ms caracteres en palabra hacer


o Apilar el primero de la cola en la pila P
o Sacar de la cola
Fin de Mientras

Mientras la pila P no sea vaca


o Escribir la cima de P
o Desapilar P

ESTRUCTURA DE DATOS Pgina 12


UNIVERSIDAD NACIONAL DEL SANTA

Fin de mientras

Cul es la salida para la entrada examen?

PALABRA P PALABRA P
1 e 6 1 6
2 x 5 2 x 5
3 a 4 3 a 4
4 m 3 4 m 3
5 e 2 5 e 2
6 n 1 6 n 1 e

PALABRA P PALABRA P
1 6 1 6
2 5 2 5
3 a 4 3 4
4 m 3 4 m 3 a
5 e 2 x 5 e 2 x
6 n 1 e 6 n 1 e

Como el nmero de caracteres en palabra ya no es mayor que el


nmero de caracteres en P entonces desapilamos P y el
resultado es:
Rpta: A X E

ESTRUCTURA DE DATOS Pgina 13


UNIVERSIDAD NACIONAL DEL SANTA

4. Escribe el algoritmo en pseudocdigo que lea una cadena de


caracteres del teclado y decida si es palndromo, es decir, si se lee
igual de izquierda a derecha que de derecha a izquierda. Implemntalo
despus en el lenguaje de programacin de su dominio. Ejemplo: daba
le arroz a la zorra el abad es palndromo.

Pseudocdigo:

Inicio

Escribir INGRESE CADENA DE CARACTERES:

Leer cadena

Almacenar cadena en A[ ]

.ntamao de A [ ]

frente1 finaln

si (n mod 2 <> 0)

mientras (frente<=(n-1)/2 )&& (final>(n-1)/2)

si(A[frente] = A[final]) // comparar letras

cc+1

fin_si

i++

fin_mientras

caso contrario

mientras (frente<=n/2 )&& (final>n/2)

si(A[frente] = A[final]) // comparar letras

cc+1

fin_si

i++

ESTRUCTURA DE DATOS Pgina 14


UNIVERSIDAD NACIONAL DEL SANTA

fin_mientras

fin_si

si (c=n/2)

Escribir ES PALNDROMO

Sino

Escribir NO ES PALNDROMO

Fin_si

Fin

5- Un estacionamiento de las avionetas de un aerdromo es en lnea, con


una capacidad hasta 12 avionetas. Las avionetas llegan por el extremo
izquierdo y salen por el extremo derecho. Cuando llega un piloto a recoger
su avioneta, so esta no est justamente en el extremo de salida (derecho),
todas las avionetas a su derecha han de ser retiradas, sacar la suya y las
retiradas colocadas de nuevo en el mismo orden en que estaban. La salida
de una avioneta supone que las dems se muevan hacia adelante, de tal
forma que los espacios libres del estacionamiento estn por la parte
izquierda. Escriba el algoritmo (pseudocdigo) para emular este
estacionamiento tiene como entrada un carcter que indica una accin
sobre la avioneta, y la matrcula de la avioneta. La accin puede ser, llegada
(E) o salida (S) de avioneta. En la llegada puede ocurrir que el
estacionamiento este lleno, si es as, la avioneta espera hasta que quede una
plaza libre, o hasta que se d la orden de retirada (salida).

PSEUDOCODIGO:

Tamao 12
fin -1,frente -1,k 0

ESTRUCTURA DE DATOS Pgina 15


UNIVERSIDAD NACIONAL DEL SANTA

cont 0, aux,aux2 0
Mientras (k = 0) {
Mensaje: Ingrese la operacin que desea hacer: 1-Meter a cola.2-Sacar
de cola.3-Salir
Si (op = 1) {
Si (fin = tamao-1) {
Mensaje:"--- COLA LLENA ---"
} Caso contrario {
Mensaje: Ingrese el nmero de matrcula"
Fin fin+1
Cola [fin] matricula
Si (frente = -1) {
Frente 0
}
cont++
}
}
Si (op = 2) {
Si (cont = 0) {
Mensaje:"--- COLA VACIA ---"
} Caso contrario {
Mensaje: Que nmero de placa quiere retirar?:"
Pos -1
Para (i=frente;i<=fin;i++){
Si (cola[i] = placa) {
Pos i
}
}
Si (pos = -1) {
Mensaje: Avioneta N:"+placa+", no encontrada...
} Caso contrario {
Matri cola [pos];
Para (i=frente; i<=pos; i++){

ESTRUCTURA DE DATOS Pgina 16


UNIVERSIDAD NACIONAL DEL SANTA

Aux cola[i]
Cola[i] aux2
aux2 aux
}
Cola [frente] cola [pos]
Frente frente+1
para ( i=frente; i<=fin; i++){
Cola [i-1] cola[i]
}
Frente frente-1
Fin fin-1
Mensaje:"**Datos del ltimo vuelo: Avioneta N:"+placa
cont--
}
}
}
Si (op = 3) {
K1
}
}

6.- Elabore el pseudocdigo de las operaciones meter y sacar de una bicola,


donde la cola de un extremo guarde cdigos de Radios y la del otro extremo
cdigo de televisores.

Leer N

frente0 final0 contTele0 contRa0

Escribir Que operacin desea realizar

Insertar (1) o Salir (2)

Mientras (c>0) hacer

Si opcin=1 entonces

Escribir Por donde va a llenar

ESTRUCTURA DE DATOS Pgina 17


UNIVERSIDAD NACIONAL DEL SANTA

Radios (1) o televisores (2)

Si op=1 entonces

Leer x

Si final = N entonces

Escribir Cola llena

Caso contrario

Si frente =0 entonces

Final final+1

Frente 1

Cola[frente] x

Caso contrario

Para i=final; i>=frente; i

Cola[i+1]cola[i]

Fin_para

finalfinal+1

cola[frente] x

fin_si

contRacaontRa+1

fin_si

fin_si

si op=2 entonces

leer y

si final=N entonces

escribir Cola Llena

caso contrario

finalfinal+1

cola[final] x

ESTRUCTURA DE DATOS Pgina 18


UNIVERSIDAD NACIONAL DEL SANTA

si frente=0 entonces

frente1

fin _si

contTelecontTele+1

fin _si

fin _si

fin_si

si opcin=2 entonces

Escribir Fin

Salir

Fin_si

C c+1

Fin _mientras

fin

7. En un archivo de texto se encuentran los resultados de una


competicin de tiro al blanco, de tal forma que en cada lnea se
encuentra Apellido, nombre, nmero de dorsal y numero de platos
rotos. Se debe escribir el algoritmo (Pseudocdigo), que lea el archivo
de la competicin y determine los 3 primeros. La salida ha de ser los 3
ganadores y a continuacin los concursantes en el orden en que
aparecen en el archivo (utilizar la estructura cola).

Inicio

C1, i1

Mientras (i<=finalA)

Si (finalA=n ^ finalB=n ^ finalC=n ^ finalD=n)

Escribir COLA LLENA

Salir

Caso contrario

ESTRUCTURA DE DATOS Pgina 19


UNIVERSIDAD NACIONAL DEL SANTA

Escribir Ingresar apellido: "

Leer apellido

FinalAfinalA+1

Ape [finalA] apellido

Si (frenteA=0)

FrenteA1

Fin_si

Escribir Ingresar nombre: "

Leer nombre

FinalBfinalB+1

Nom [finalB] nombre

Si (frenteB=0)

FrenteB1

Fin_si

Escribir Ingresar numero dorsal: "

Leer dorsal

FinalCfinalC+1

Dor[finalC]dorsal

Si (frenteC=0)

FrenteC1

Fin_si

Escribir Ingresar numero de platos rotos: "

Leer platos

FinalDfinalD+1

Pla [finalD] platos

ESTRUCTURA DE DATOS Pgina 20


UNIVERSIDAD NACIONAL DEL SANTA

Si (frenteD=0)

FrenteD1

Fin_si

Fin_si

i++

Fin_mientras

Mientras (c<=3)

Para i=1 hasta finalD hacer

Si (mayor<= Pla[i])

mayorPla[i]

posi

fin_si

fin_para

mayape Ape[pos]

maynomNom[pos]

maydor Dor[pos]

Escribir PUESTO (c):

Escribir apellido: +mayape //apellido del mayor

Escribir nombre: +maynom //nombre del mayor

Escribir numero dorsal:+maydor //dorsal del mayor

Escribir numero de platos rotos: +mayor

Y=Pla[pos]

Y=Ape[pos]

Y=Nom[pos]

ESTRUCTURA DE DATOS Pgina 21


UNIVERSIDAD NACIONAL DEL SANTA

Y=Dor[pos]

Para i=pos hasta finalD hacer

Pla[pos]Pla[pos+1]

Ape[pos]Ape[pos+1]

Nom[pos]Nom[pos+1]

Dor[pos]Dor[pos+1]

Fin_para

finalDfinalD-1

finalAfinalA-1

finalBfinalB-1

finalCfinalC-1

cc+1

Fin_mientras

Escribir Concursantes Restantes:

Para i=frenteA hasta finalA hacer

Escribir Ape[i]

Escribir Nom[i]

Escribir Dor[i]

Escribir Pla[i]

Fin_para

Fin

ESTRUCTURA DE DATOS Pgina 22


UNIVERSIDAD NACIONAL DEL SANTA

ESTRUCTURA DE DATOS Pgina 23

Vous aimerez peut-être aussi