Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas e Informática
Del Santa
Ejercicio 2:
D
(
A+ B∗C−
EF
∗G ∗H
)
Forma Infija:
A+(B∗C−D/( EF )∗G)∗H
Forma Prefija:
A+(B∗C−D/( EF )∗G)∗H
A+(B∗C−D/[¿ EF ]∗G)∗H
A+([ ¿ BC ]−D /[¿EFG ])∗H
A+¿
A+¿
A+¿
+ A∗−¿ BC/ D ∗EFGH ¿
Forma Sufija:
A+(B∗C−D/( EF )∗G)∗H
A+¿
A+¿
A+¿
A+¿
A+¿
ABC∗¿ ¿ G∗−H∗+¿
Ejercicio 3:
−b ± √b 2−4 ac
2a
Forma infija:
( - B + ( ( B ^ 2 – 4 * A * C) ^ 1 / 2 ) ) / 2 *A
Forma Prefija:
( - B + ( ( B ^ 2 – 4 * A * C) ^ 1 / 2 ) ) / 2 *A
-B + ( ( [^ B 2] – [* * 4 A C] )^ [ /1 2 ] ) / * 2 A
-B + ( [ - ^B 2 * * 4 A C]^ [/ 1 2 ] ) / *2 A
[-B] + [^ - ^B 2 * * 4 A C / 1 2 /] / *2 A
[+ - B ^ - ^B 2 * * 4 A C / 1 2 ] / [*2 A ]
/ + - B ^- ^ B 2 * * 4 A C / 1 2 *2 A
Forma Sufija:
( - B + ( ( B ^ 2 – 4 * A * C) ^ 1 / 2 ) ) / 2 *A
(- B + ( ( [B 2 ^] – [ 4 A C * *] ) ^ [1 2 / ] / 2 A *
(- B + ( [B 2 ^ 4 A C * *-]^ [1 2 / ] / 2 A *
[- B] + [B 2 ^ 4 A C * *- 1 2 /^ ] / 2 A *
[ -B B 2 ^ 4 A C * *- 1 2 /^ + ] / [ 2 A * ]
-B B 2 ^ 4 A C * *- 1 2 /^ + 2 A * /
Universidad Nacional Ing. Sistemas e Informática
Del Santa
Ejercicio 4:
234567+*+*+
Ejercicio 5:
12, 8, 3, -, /, 1, 2, 4, 6, +, *, +, +
Ejercicio 6:
N
S= (2 A + ( N−1 )∗D)
2
Forma infija:
( N /2)∗(2∗A+( N−1)∗D)
Forma Prefija:
( N /2)∗(2∗A+( N−1)∗D)
[¿ N 2]∗(2∗A+(N−1)∗D)
[¿ N 2]∗(2∗A+[−N 1]∗D)
[¿ N 2]∗([¿ 2 A]+[−N 1]∗D)
[¿ N 2]∗([¿ 2 A]+[¿−N 1 D])
Universidad Nacional Ing. Sistemas e Informática
Del Santa
[¿ N 2]∗[+¿ 2 A∗−N 1 D]
¿ /N 2+¿ 2 A∗−N 1 D
Forma Sufija:
( N /2)∗(2∗A+( N−1)∗D)
¿
¿
¿
¿
¿
N 2/2 A∗N 1−D∗+¿
Ejercicio 7
1−R N
G= A
1−R
Forma infija:
A *( ( 1 – R^N ) / (1 – R ) )
Forma prefija:
A *( ( 1 – R^N ) / (1 – R ) )
A * ([ 1 ] – [ ^ R N ] / ( - 1 R ) )
A * ( [ - 1 ^ R N ] / ( -1 R ) )
A * [ / - 1 ^ R N -1 R]
* A / - 1 ^ R N -1 R
Forma sufija:
A *( ( 1 – R^N ) / (1 – R ) )
A * ( [ 1 ] – [ R N ^] ) / ( 1 R - ) )
A * ( [ 1 R N ^ - ] / [ 1 R -] )
A*1RN^- 1R-/
A 1RN^- 1R-/*
package infija.a.postfija;
import javax.swing.JOptionPane;
public class InfijaAPostfija {
public static int Jerarquia(char x) {
char aux = ' ';
if (x == '^') {
aux = 5;
} else if (x == '*' || x == '/') {
aux = 4;
} else if (x == '+' || x == '-') {
aux = 3;
}
return aux;
}
public static void main(String[] args) {
Universidad Nacional Ing. Sistemas e Informática
Del Santa
TopeExpo=TopeExpo+1;
Expo[TopeExpo] = x;
}
}
}
for (int i=0;i<Expo.length;i++){
Postfija = Postfija +""+ Expo[i];
}
JOptionPane.showMessageDialog(null, "La expresión posfija es: "+Postfija );
}
}
4. Dados los caracteres (), [] y {}, y una cadena s; s esta balanceada si tiene alguno 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 paréntesis, llave o corchete abierto existe un
carácter de cierre correspondiente). Ejemplo {(a+b) [(cd) ^2]}. Escribir el Algoritmo (Pseudo
código) que use una PILA para ver si una cadena es balanceada.
5. Escribir el algoritmo (Pseudo código) 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 tamaño del arreglo no variará. Si una pila necesita más espacio solo tiene
que tomarlo del arreglo que tiene 15 lugares en función 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 además 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.
CODIGO EN JAVA
import javax.swing.JOptionPane;
public class Mostrar {
char pilaA[] = new char[16];
char pilaB[] = new char[16];
char pilaC[] = new char[16];
char arreglo[] = new char[16];
int x, a;
int topea = 0, frenteb = 0, topeb = 5, frentec = 11, topec = 10;
Universidad Nacional Ing. Sistemas e Informática
Del Santa
package ejercicio.pkg5;
import javax.swing.JOptionPane;
public class Ejercicio5 extends Mostrar {
public static void main(String[] args) {
Mostrar m = new Mostrar();
int x, a;
do {
x = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Opcion:" + "\n" + "1)Ingresar
dato" + "\n" + "2)Eliminar elemento" + "\n" + "3)Finalizar"));
switch (x) {
case 1:
m.Ingresar();
a = Integer.parseInt(JOptionPane.showInputDialog("En que pila desea ingresar:" + "\n"
+ "1)Pila A" + "\n" + "2)Pila B" + "\n" + "3)Pila C"));
switch (a) {
Universidad Nacional Ing. Sistemas e Informática
Del Santa
case 1:
m.IPilaA();
m.mostrar();
break;
case 2:
m.IPilaB();
m.mostrar();
break;
case 3:
m.IPilaC();
m.mostrar();
}
break;
case 2:
m.Eliminar();
}
} while (x != 3);
}
}
PSEUDOCODIGO
pilaA=16
pilaB=16
pilaC=16
arreglo=16
leer x
leer a
topea=0 frenteb=0 topeb=5 frentec=11 topec=10
contaa=0 contab=5 contac=10
leer dato
leer dato2
i=0
Leer dato2
Mostrar "Ingrese dato a eliminar: "
Desde int i = 1 Hasta i < 16 Hacer +1
Si (arreglo[i] = dato2) Entonces
arreglo[i] = ' '
Si (i < 6) Entonces
pilaA[i] = ' '
Sino
Si (i > 5 y i < 11) Entonces
pilaB[i] = ' ';
Fin_si
Sino
Si (i > 10) Entonces
pilaC[i] = ' '
Fin_si
Fin_si
Sino
Mostrar "El dato no se encuentra en el arreglo"
Fin_si
Mostrar "Arreglo:"
Desde int i = 1 Hasta i < 16 Hacer +1
Universidad Nacional Ing. Sistemas e Informática
Del Santa
6. En la SUNAT se considera una cola frente a una ventanilla en la cual si un usuario al llegar
a su momento de atención no puede ser atendido (por que se olvidó un documento de fácil
subsanación), se le reintegra a una cola en ventanilla especial en la posición Nº 5 si solo se
olvidó la copia de su DNI o en la posición N°10 si acaso hay más de 10 personas y se olvidó
llenar su formulario de Impuestos, o al final de la misma, en caso contrario. Se pide diseñar
un procedimiento de MESAPARTES (lo que debe suceder cuando un cliente es atendido),
ESPECIAL (vuelta a la cola en ventanilla especial) y otro de ENTRADA (inicial) en cola.
Todo ello con vistas a que el reingreso sea sencillo, para lo que se sugiere controlar el Nº de
personas en la cola, y en su caso, un puntero al elemento adecuado de la cola para ejecutar el
reingreso. Efectúe la prueba de escritorio correspondiente.
CODIGO EN JAVA
package sunat;
import javax.swing.JOptionPane;
//Llamado
public class Herencia {
char Dato,aux;
boolean Dni, ForImpuesto;
String DNI,Formulario;
int con=5, c=0, mayor,i, Frente=0, Final=0,FrentePre=0,FinalPre=0;
int n = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el tamaño de la cola normal: "));
int m = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el tamaño de la cola
preferencial: "));
char Cola[]= new char[n];
char ColaPreferencial[]= new char[m];
public void LlenarColas(){
for (i=0;i<Cola.length;i++){
Cola[i]=' ';
}
for (i=0;i<ColaPreferencial.length;i++){
ColaPreferencial[i]=' ';
}
}
public void Dato(){
Dato = JOptionPane.showInputDialog("Ingrese el dato: ").charAt(0);
}
public void Insersión(){
if (Cola[Final]==' '){
Cola[Final]=Dato;
}else if (Final==Cola.length-1){
System.out.println("Cola llena.");
}else{
Final=Final+1;
Universidad Nacional Ing. Sistemas e Informática
Del Santa
Cola[Final]=Dato;
}
}
public void InsersiónPreferencial(){
if (ColaPreferencial[FinalPre]==' '){
ColaPreferencial[FinalPre]=Dato;
}else if (FinalPre==ColaPreferencial.length-1){
System.out.println("Cola preferencial llena.");
}else{
FinalPre=FinalPre+1;
ColaPreferencial[FinalPre]=Dato;
}
}
public void Salida(){
//Analizar el mayor.
if (n>m){
mayor=n;
}else{
mayor=m;
}
//Posiciones (La cola mayor predomina)
for (i=0;i<mayor;i++){
System.out.print(i+ " | ");
}
System.out.println();
System.out.println("Cola normal");
System.out.println("Frente: "+Frente);
System.out.println("Final: "+Final);
//Cola normal
for (i=0;i<n;i++){
System.out.print(Cola[i]+" | ");
}
System.out.println();
System.out.println("Cola preferencial");
System.out.println("FrentePre: "+FrentePre);
System.out.println("FinalPre: "+FinalPre);
//Cola preferencial
for (i=0;i<m;i++){
System.out.print(ColaPreferencial[i]+" | ");
}
System.out.println();
System.out.println("--------------------");
}
public void Ventana(){
DNI = JOptionPane.showInputDialog("¿Usted tiene su copia de DNI? \n(Ingrese 'Si' o 'No')");
switch (DNI){
case "Si":
Dni = true;
Formulario = JOptionPane.showInputDialog("¿Usted llenó su formulario de
impuestos? \n(Ingrese 'Si' o 'No')");
Universidad Nacional Ing. Sistemas e Informática
Del Santa
switch (Formulario){
case "Si":
ForImpuesto = true;
break;
case "No":
ForImpuesto = false;
break;
}
break;
case "No":
Dni = false;
Formulario = JOptionPane.showInputDialog("¿Usted llenó su formulario de
impuestos? \n(Ingrese 'Si' o 'No')");
switch (Formulario){
case "Si":
ForImpuesto = true;
break;
case "No":
ForImpuesto = false;
break;
}
break;
}
}
public void Eliminacion(){
if (Dni==false && ForImpuesto==false){
FinalPre=FinalPre+1;
Cola[Frente]=ColaPreferencial[FinalPre];
Cola[Frente]=' ';
Frente=Frente+1;
}else{
if (Dni==false && ForImpuesto==true){
if (FinalPre>=4){
con=FinalPre;
do{
aux=ColaPreferencial[con+1];
ColaPreferencial[con+1]=ColaPreferencial[con];
ColaPreferencial[con]=aux;
con=con-1;
}while(con!=3);
ColaPreferencial[4]=Cola[Frente];
Cola[Frente]=' ';
Frente=Frente+1;
FinalPre=FinalPre+1;
}else{
if(ColaPreferencial[Final]==' '){
ColaPreferencial[FinalPre]=Cola[Frente];
Cola[Frente]=' ';
}else{
FinalPre=FinalPre+1;
Universidad Nacional Ing. Sistemas e Informática
Del Santa
ColaPreferencial[FinalPre]=Cola[Frente];
Cola[Frente]=' ';
Frente=Frente+1;
}
}
}else{
if(Dni==true && ForImpuesto==false){
if (FinalPre==Cola.length-1){
System.out.println("Cola llena");
}else{
con=FinalPre;
if(FinalPre>=9){
do{
aux=ColaPreferencial[con+1];
ColaPreferencial[con+1]=ColaPreferencial[con];
ColaPreferencial[con]=aux;
con=con-1;
}while(con!=8);
ColaPreferencial[9]=Cola[Frente];
Cola[Frente]=' ';
Frente=Frente+1;
FinalPre=FinalPre+1;
}else{
FinalPre=FinalPre+1;
ColaPreferencial[FinalPre]=Cola[Frente];
Cola[Frente]=' ';
Frente=Frente+1;
}
}
}else{
if (Cola[Frente]!=' '){
Cola[Frente]=' ';
Frente=Frente+1;
}else if (Frente == Cola.length-1){
System.out.println("Cola normal vacía.");
}else{
Cola[Frente]=' ';
Frente=Frente+1;
}
}
}
}
for (int j=0;j<Cola.length;j++){
if (Cola[j]==' '){
c=c+1;
}
if (c==Cola.length){
Frente=0;
Final=0;
}
Universidad Nacional Ing. Sistemas e Informática
Del Santa
}
c=0;
}
public void EliminacionPreferencial(){
if(FrentePre==0){
ColaPreferencial[FrentePre]=' ';
FrentePre=FrentePre+1;
}else{
if(FrentePre == ColaPreferencial.length){
System.out.println("Cola preferencial vacía.");
}else{
ColaPreferencial[FrentePre]=' ';
FrentePre=FrentePre+1;
}
}
for (int j=0;j<ColaPreferencial.length;j++){
if (ColaPreferencial[j]==' '){
c=c+1;
}
if (c==ColaPreferencial.length){
FrentePre=0;
FinalPre=0;
}
}
c=0;
}
}
package sunat;
import javax.swing.JOptionPane;
public class SUNAT {
public static void main(String[] args) {
int opcion,opcion2;
Herencia he = new Herencia();
he.LlenarColas();
do{
opcion = Integer.parseInt(JOptionPane.showInputDialog("BIENVENIDO A LA
SUNAT"+"\nIngrese el tipo de cola al que desea ingresar: "+"\n1) Cola normal."+"\n2) Cola
preferencial."+"\n3) Salir."));
switch (opcion){
case 1:
do{
opcion2 = Integer.parseInt(JOptionPane.showInputDialog("BIENVENIDO A LA
COLA NORMAL"+"\nIngrese la opción a elegir: "+"\n1) Ingreso de una persona a la cola."+"\n2)
Atención de una persona."+"\n3) Salir."));
switch (opcion2){
case 1:
he.Dato();
Universidad Nacional Ing. Sistemas e Informática
Del Santa
he.Insersión();
he.Salida();
break;
case 2:
he.Ventana();
he.Eliminacion();
he.Salida();
break;
}
}while(opcion2!=3);
break;
case 2:
do{
opcion2 = Integer.parseInt(JOptionPane.showInputDialog("BIENVENIDO A LA
COLA PREFERENCIAL"+"\nIngrese la opción a elegir: "+"\n1) Ingreso de una persona a la
cola."+"\n2) Atención de una persona."+"\n3) Salir."));
switch (opcion2){
case 1:
he.Dato();
he.InsersiónPreferencial();
he.Salida();
break;
case 2:
he.EliminacionPreferencial();
he.Salida();
break;
}
}while(opcion2!=3);
break;
}
}while(opcion!=3);
System.out.println("Gracias☺");
System.out.println("Desarrollado por Oscar Pereda.");
}
}
PSEUDOCODIGO
ENTRADA Frente 1
Final 0 , frente 0 Nc final
Inicio Fin_si
Leer dato Fin_si
Si final=N entonces FIN
Escribir “COLA LLENA”
Sino MESAPARTES
Final final LA+1 Inicio
COLA(final) dato Si olvido es V entonces
Nc final(frente)+1 Llamar procedimiento RETORNO
Si frente = 0 entonces Sino
Universidad Nacional Ing. Sistemas e Informática
Del Santa
A+ √ B2−C
X=
E
√3 D−
F
Forma Infija:
(A+((B^2–C)^½ ) / ((D^1/3)–E/F)
Forma Prefija:
( A + ( ( B ^ 2 – C ) ^ ½ ) / ( ( D ^ (1 / 3) ) – E / F )
(A+((^B2- C )^/12) /(( ^D/13) -/EF)
(A+(-^B2C)^/12)) / (-^D/13 /EF)
(A+(^-^B2C/12)) /(-^D/13 /EF)
(+A ^-^B2C/12))/(-^D/13/EF)
/+A^-^B2C/12-^D/13/EF
Forma Sufijo:
(A+((B^2–C)^½ ) / ((D^1/3)–E/F)
Universidad Nacional Ing. Sistemas e Informática
Del Santa
8. Se tiene una pila con los primeros 10 números naturales, y una cola con los 10 siguientes,
escriba el algoritmo en pseudo código que utilizando las operaciones básicas para cada una de
estas estructuras permita obtener la sumatoria del producto de sus datos, atendiendo la regla
LIFO para la pila y FIFO para la cola.
CODIGO EN JAVA
package ejercicio_08;
import javax.swing.JOptionPane;
public class Ejercicio_08 {
acum = acum * j;
j = j + 1;
System.out.println("|" + pila[i]);
}
}
System.out.println(" COLA " + acum);
int cola[] = new int[10];
int frente = 0, fin = 0;
int k, m = 11;
long multi = 1, suma;
for (k = 0; k < 10; k++) {
if (fin == 10) {
JOptionPane.showMessageDialog(null, "COLA LLENA");
} else {
fin = fin + 1;
cola[k] = m;
multi = multi * m;
m = m + 1;
}
Universidad Nacional Ing. Sistemas e Informática
Del Santa
if (frente == -1) {
frente = 1;
}
}
System.out.println(" PILA " + multi);
suma = multi + acum;
System.out.println("LA SUMA TOTAL ES DE: " + suma);
}
}
9. Dados los caracteres (), [] y {}, y una cadena s; s esta balanceada si tiene alguno 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 paréntesis, llave o corchete abierto existe un
carácter de cierre correspondiente). Ejemplo s = {[(c-d) ^2]+ 1}. Escribir el Algoritmo
(Pseudo código) que use una PILA para ver si una cadena es balanceada.
EJERCICIO 1
Se considera una cola frente a una ventanilla en la cual si un cliente al llegar a la misma no puede
ser atendido, se le reintegra a la cola a la posición nº 10, si hay más de 10 personas, o al final de la
misma, en caso contrario. Se pide diseñar un procedimiento de ATENCIÓN (lo que debe suceder
cuando un cliente es atendido), REINGRESO (vuelta a la cola) y otro de INGRESO (inicial) en
cola. Todo ello con vistas a que el reingreso sea sencillo, para lo que se sugiere controlar el nº de
personas en la cola, y en su caso, un puntero al elemento adecuado de la cola para ejecutar el
reingreso.
CÓDIGO JAVA:
package ejercicios_semana10;
import java.util.Scanner;
VALOR=in.next();
if(FINAL==C.length-1){
System.out.println("**COLA LLENA**");
}else{
if (FRENTE==-1) {
FRENTE=0;
}
FINAL++;
C[FINAL]=VALOR;
}
}else if (OP == 2) {
if (FRENTE==-1){
System.out.println("NO HAY ELEMENTOS EN LA COLA");
}else{
System.out.println("1)Atendido?" +"\t"+ "2)No Atendido?"+"\n");
LPRE=in.nextInt();
if (LPRE==1) {
C[FRENTE]=" ";
while(FRENTE<FINAL){
C[FRENTE]=C[FRENTE+1];
FRENTE++;
}
C[FINAL]=" ";
FINAL--;
FRENTE=0;
if (FINAL==-1) {
FRENTE=-1;
}
}else if (LPRE==2){
if (FINAL>7) {
z=C[FRENTE];
C[FRENTE]=" ";
while(10>FRENTE){
C[FRENTE]=C[FRENTE+1];
FRENTE++;
}
C[REING]=z;
FRENTE=0;
}else{
z=C[FRENTE];
C[FRENTE]=" ";
while(FINAL>FRENTE){
C[FRENTE]=C[FRENTE+1];
FRENTE++;
}
C[FINAL]=z;
FRENTE=0;
}
}
}
Universidad Nacional Ing. Sistemas e Informática
Del Santa
}else{
System.out.println("Solo digite 1 o 2.");
}
System.out.println("Cola Actual.");
for (int i = 0; i < C.length; i++) {
System.out.print("| " + C[i] + " |");
}
System.out.println();
System.out.println("1)Continuar" + "\t" + "2)Salir");
OPCION = in.nextInt();
} while (OPCION == 1);
}
}
PSEUDOCÓDIGO:
{frente=0;final=0}
Inicio
Si frente=0 entonces
Caso contrario
Repetir desde i=2 hasta final
cola (i)=cola(i-1);
fin_desde
final =final-1;
Fin_si
/*REINGRESO*/
Si frente=0 entonces
Escribir “Cola vacía no atiende”
Caso contrario
Si final=1 entonces
Escribir “Eres el ultimo te damos un tiempo para regularizar documentos”
Caso contrario
aux=cola(1);
Si final<10 entonces
Repetir desde i=2 hasta final
cola(i)=cola(i-1);
Fin_desde
cola(final)=aux;
caso contrario
Repetir desde i=2 hasta 10
cola(i-1)=cola(i);
Fin_desde
Universidad Nacional Ing. Sistemas e Informática
Del Santa
cola(10)=aux;
Fin_si
Fin_si
Fin_si
/*INGRESO*/
Leer X; {Nuevo ingreso}
Si final=n
Escribir “Ya no se puede ingresar a nadie, no hay espacio ”
Caso contrario
final=final++;
cola(final-1)= x;
Si frente= 0 entonces
Frente=1;
Fin_si
Fin_si
Fin
EJERCICIO2
Un ascensor está situado en un edificio de N plantas (la planta baja es la 0) y responde a dos tipos
de peticiones de funcionamiento: las de los usuarios que están dentro del ascensor (peticiones
internas) y las de los que están fuera (peticiones externas). Estas últimas sólo serán atendidas
cuando no haya peticiones internas. Los dos tipos de peticiones se gestionan independientemente y
responden a criterios de temporalidad, de manera que las llamadas van siendo atendidas según el
orden de solicitud. Con este planteamiento, hay que escribir un programa que simule el
funcionamiento del ascensor de forma que las peticiones se realicen mediante pulsaciones del
teclado y, "al mismo tiempo", mover el ascensor a los pisos que se van solicitando. Se distinguirá
entre peticiones interiores y exteriores según las teclas pulsadas (teclas: 0, 1, 2, .. N, indican
peticiones interiores a dichos pisos; teclas: -0, -1, -2, ..., -N, indican peticiones exteriores en el
mismo orden), la tecla 'N+1' se reserva para finalizar la simulación.
La visualización del proceso se puede realizar utilizando un método MOVER_ASCENSOR que
muestra por pantalla el movimiento del ascensor. Este método responde al siguiente perfil:
MOVER_ASCENSOR (desde, hasta: 0..N); donde desde indica la posición actual del ascensor y
hasta, el piso al que debe ir.
CÓDIGO JAVA:
package ejercicios_semana10;
PSEUCÓDIGO:
INICIO
Leer petición
SI petición = n + 1 entonces
finaliza simulación
caso contrario
SI petición es interna entonces
frenteinterna =0, finalinterna = 0
Leer x
SI finalinterna = n entonces
Escribir “cola llena: no hay lugares para peticiones internas”
caso contrario
finalinterna = finalinterna + 1
cola[final]= x
fin_si
SI frenteinterna = 0 entonces
frenteinterna = 1
fin_si
llamar a procedimiento cumplir_orden interna
caso contarrio
frenteexterno= 0, finalexterno= 0
leer x
SI finalexterna = n entonces
escribir “cola llena : no hay lugares para peticiones
externas”
caso contrario
finalexterna= final + 1
cola[frente]= x
fin_si
SI frenteexterna = 0 entonces
frente= 1
fin_si
llamar a procedimientos cumplir_orden externo
fin_si
fin_si
FIN
INICIO
Piso_actual =0
Repetir Piso_destino cola[frenteinterna] Hasta que (frenteinterna = 0)
Repetir
Universidad Nacional Ing. Sistemas e Informática
Del Santa
INICIO
Piso_actual= 0
Repetir Piso_destino cola[frenteexterna] Hasta que (frenteexterna = 0)
Repetir
Si frenteexterna = finalexterna entonces
Frenteexterna= 0
Finalexterna= 0
Caso contrario
Frenteexterna= frenteexterna + 1
Fin_si
Piso_actual piso_destino
Hasta piso_destino
FIN
EJERCICIO3
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: ¿Cuál es la salida para la entrada "examen"?
1. mientras haya más caracteres en palabra hacer
2. apilar el primero de la cola en la pila P
3. sacar de la cola
4. Fin_Mientras
5. Mientras la pila P no sea vacía
6. Escribir la cima de P
7. Desapilar de P
8. Fin_Mientras
9. {frente=0, final=0;tope=0}
CÓDIGO JAVA:
package ejercicios_semana10;
String[] COLA={"E","X","A","M","E","N"};
String[] PILA=new String [N];
int TOPE=-1;
public void SACAR(){
while(FRENTE<=FINAL){
TOPE=TOPE+1;
PILA[TOPE]=COLA[FRENTE];
if(FRENTE==FINAL){
System.out.println("Cola vacía.");
}
FRENTE=FRENTE+1;
}
}
public void SACARPILA(){
System.out.print("SALIDA:");
while(TOPE>-1){
System.out.print(PILA[TOPE]+" ");
TOPE=TOPE-1;
if(TOPE==-1){
System.out.println();
System.out.println("Pila vacia.");
}
}
System.out.println();
}
PSEUDOCÓDIGO:
INICIO
Tope 0; frente 1; final n;
Leer palabra;
Mientras frente < = final hacer
Tope tope + 1
P [tope] palabra [frente];
Si frente = final entonces
Escribir “cola vacía”
Fin_si
Frente frente + 1;
Fin_Mientras
Mientas tope > 0 hacer
Escribir “la cima de P”
Universidad Nacional Ing. Sistemas e Informática
Del Santa
Tope tope – 1
Si tope = 0 entonces
Escribir “pila vacía”
Fin_si
Fin_Mientras
FIN
PRUEBA DE ESCRITORIO:
Tope Pila[T
ope]
6 n
5 e
4 m
3 a
2 x
1 e
0
EJERCICIO 4
Escribe el algoritmo en pseudocódigo que lea una cadena de caracteres del teclado y decida si es
palíndromo, es decir, si se lee igual de izquierda a derecha que de derecha a izquierda.
Impleméntalo después en el Lenguaje de programación de su dominio. Ejemplo: daba le arroz a la
zorra el abad es palíndromo.
CÓDIGO JAVA:
package ejercicios_semana10;
//codigo ded oscar mucho mejor
public class Ejercicio4 {
PSEUDOCÓDIGO:
INICIO
Mostrar 'Ingrese la frase: '
Leer frase
i=1
j = longitud(frase)
hacer mientras (extraerLetra(frase, i) = extraerLetra(frase,j) y i < j) {
i=i+1
j=j-1
Fin HacerMientras
Si (i >= j) entonces
Mostrar "La frase: ", frase, " es palindromo"
Sino
Mostrar "La frase: ", frase, " es palindromo"
FinSi
FIN
EJERCICIO 5
Un estacionamiento de las avionetas de un aeródromo es en línea, 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, si ésta 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 relativo en que estaban. La salida de una avioneta supone que las demás
se mueven hacia adelante, de tal forma que los espacios libres del estacionamiento estén por la parte
izquierda. Escriba el Algoritmo (Pseudocódigo) para emular este estacionamiento tiene como
entrada un carácter que indica una acción sobre la avioneta, y la matricula de la avioneta. La acción
puede ser, llegada (E) o salida (S) de avioneta, En la llegada puede ocurrir que el estacionamiento
esté lleno, si es así la avioneta espera hasta que quede una plaza libre, o hasta que se dé la orden de
retirada (salida).
CÓDIGO JAVA:
package ejercicios_semana10;
import java.util.Scanner;
public Ejercicio5_metodo() {
int N = 12;
RETIRADAS = new String[N];
COLA = new String[N];
for (int i = 0; i < COLA.length; i++) {
COLA[i] = "";
}
}
}
}
MOSTRAR();
}
}
if (POS == -1) {
System.out.println("**MATRICULA DE AVIONETA NO ENCONTRADA**");
} else {
CONT--;
if (FRENTE == FINAL) {
COLA[POS] = "";
FRENTE = -1;
FINAL = -1;
} else {
if (POS == FINAL) {
COLA[FINAL] = "";
FINAL--;
} else {
RETIRADA();
System.out.println("**(RETIRANDO AVIONETAS)**");
MOSTRAR();
System.out.println("N°de Matricula-Avioneta a salir: " + COLA[POS]);
COLA[POS] = "";
FINAL--;
MOSTRAR();
REINGRESO();
System.out.println("**(REINGRESANDO AVIONETAS)**");
}
}
}
}
MOSTRAR();
}
K = 0;
for (int i = FINAL; i > POS; i--) {
RETIRADAS[K] = COLA[i];
COLA[i] = "";
K++;
FINAL--;
}
}
package ejercicios_semana10;
import java.util.Scanner;
PSEUDOCÓDIGO:
PROCEDIMIENTOS [ ]:
ARREGLARPOSICION:
i=1
Mientras i<= FINAL – 1 hacer
COLA[i] ← COLA[i + 1]
COLA[i + 1] ← Vacio
i = i+1
Fin_Mientras
FIN_ARREGLARPOSICION
Universidad Nacional Ing. Sistemas e Informática
Del Santa
SACAR
i=1
Mientras i<= POSICION – 1 hacer
COLAAUX[i] ← COLA[i]
COLA[i] ← Vacio
i = i+1
Fin_Mientras
FIN_SACAR
LLENAR:
i=1
Mientras i <= POSICION – 1 hacer
COLA[i] ← COLAAUX[i]
i = i+1
Fin_Mientras
COLAAUX ← Vacio
Si FINAL > POSICION entonces
i=1
Mientras i <= FINAL – 1 hacer
COLA[i] ← COLA[i+1]
COLA[i+1] ← Vacio
Fin_Mientras
Fin_Si
FIN_LLENAR
EJERCICIO6
Elabore el pseudocódigo de las operaciones METER y SACAR de una bicola, donde la cola de un
extremo guarda códigos de Radios y la del otro extremo códigos de Televisores.
CÓDIGO JAVA:
package ejercicios_semana10;
import javax.swing.JOptionPane;
if (FRENTE > 0) {
FRENTE--;
}
BICOLA[FRENTE] = X;
if (FIN == -1) {
FIN++;
}
}
for (int i = 0; i < BICOLA.length; i++) {
System.out.print(" [ " + BICOLA[i] + " ] ");
}
}
package ejercicios_semana10;
import javax.swing.JOptionPane;
String bicola[] = {" ", " ", " ", " "};
int salida = 0;
Ejercicio6_metodo OP = new Ejercicio6_metodo();
do {
try {
salida = Integer.parseInt(JOptionPane.showInputDialog(null,
"1.Ingrese codigos de radio\n2.Ingrese codigos de televisores\n3.Limpiar
codigo\n4.Salir",
"CODIGOS", JOptionPane.QUESTION_MESSAGE));
switch (salida) {
case 1:
OP.ingresarfrente();
System.out.println();
break;
case 2:
OP.INGRESARFINAL();
System.out.println();
break;
case 3:
OP.ELIMINAR();
System.out.println();
break;
case 4:
JOptionPane.showMessageDialog(null, "GRACIAS POR USAR EL
PROGRAMA !!");
break;
default:
JOptionPane.showMessageDialog(null, "Opcion incorrecta",
"ERROR", JOptionPane.INFORMATION_MESSAGE);
}
} catch (Exception z) {
JOptionPane.showMessageDialog(null,
"ERROR" + z.getMessage());
}
} while (salida != 4);
}
}
PSEUDOCÓDIGO:
Métodos:
Frente1 , fin0
String bicola[]
//ingreso de frente
Si(frente=0 o fin=frente y frente=0 o bicola[0]=x)entonces
Mostrar “cola por el frente llena”
Universidad Nacional Ing. Sistemas e Informática
Del Santa
Caso contrario
Leer x
Si(frente>0)entonces
Frentefrente-1
Fin si
Bicola[frente] x
Si (fin=0)entonces
Finfin+1
Mostrar cola
//ingreso final
Si (fin=bicola.length-1)entonces
Mostrar”cola vacia”
Caso contrario
Leer x
Finfin+1
Bicola[fin]x
Fin si
Mostrar cola
//Eliminar
Si(frente=bicola.length)entonces
Mostrar “cola vacia”
Caso contrario
Bicola[frente]vacio
Frentefrente+1
Mostrar cola.
Aplicacion:
String bicola[]
Salida0
MetodosCodigos onuevo MetodoCodigos
Hacer Mientras (salida<>0)
Leer salida
Menú de salida(1.- ingresar código de radio 2.-ingrese código de televisores 3.- limpiar 4.- salir)
Caso 1
o. ingreseFrente
break
Caso 2
o.ingreseFinal
break
Caso 3
o.eliminar
break
Caso 4
Salir
Fin HacerMientras
EJERCICIO7
Universidad Nacional Ing. Sistemas e Informática
Del Santa
En un archivo de texto se encuentran los resultados de una competición de tiro al plato, de tal
forma que en cada línea se encuentra Apellido, Nombre, número de dorsal y número de platos rotos.
Se debe escribir el algoritmo (Pseudocódigo), que lea el archivo de la competición y determine los
tres primeros. La salida ha de ser los tres ganadores y a continuación los concursantes en el orden
en que aparecen en el archivo (utilizar la estructura cola).
CÓDIGO JAVA:
package ejercicios_semana10;
import java.util.Scanner;
package ejercicios_semana10;
NOMBRE[FINAL] = nombre;
DORSAL[FINAL] = dorsal;
PLATO[FINAL] = platos;
}
if (FRENTE == -1) {
FRENTE = 0;
}
}
package ejercicios_semana10;
import java.util.Scanner;
PSEUDOCÓDIGO:
Final 1 ← Final 1 + 1
Final 2 ← Final 2 + 1
Final 3 ← Final 3 + 1
Final 4 ← Final 4 + 1
COLA1[Fin1] ← Ap
COLA2[Fin2] ← Nom
COLA3[Fin3] ← Dor
COLA4[Fin4] ← Plat
Fin_Si
FIN
EJERCICIO 8
El despegue de aeronaves en un aeropuerto se realiza siguiendo el orden establecido por una cola de
prioridades. Hay 5 prioridades establecidas según el destino de la aeronave. Destinos de menos de
500 km tienen la máxima prioridad, prioridad 1, entre 500 y 800 km prioridad 2, entre 801 y 1000
km prioridad 3, entre 1001 y 1350 km prioridad 4 y para mayores distancias prioridad 5. Cuando
Universidad Nacional Ing. Sistemas e Informática
Del Santa
una aeronave recibe cierta señal se coloca en la cola que le corresponde y empieza a contar el
tiempo de espera. Los despegues se realizan cada 6 minutos según el orden establecido en las
distintas colas de prioridad. El piloto de una aeronave puede pasar el aviso a control de que tiene un
problema, y no puede despegar por lo que pasa al final de la cola y se da la orden de despegue a la
siguiente aeronave. Puede darse la circunstancia de que una aeronave lleve más de 20 minutos
esperando, en ese caso pasará a formar parte de la siguiente cola de prioridad y su tiempo de espera
se inicializa a cero. Escribir el algoritmo que simule este sistema de colas mediante una lista única,
cada vez que despegue un avión saldrá un mensaje con las características del vuelo y el tiempo total
de espera.
CÓDIGO JAVA:
package ejercicios_semana10;
import java.util.Scanner;
} else {
if (DIS >= 801 && DIS <= 1000) {
FINAL_C = FINAL_C + 1;
Universidad Nacional Ing. Sistemas e Informática
Del Santa
COLA_C[FINAL_C] = AV;
System.out.println("");
System.out.println(" La distancia es: " + DIS);
} else {
if (DIS >= 1001 && DIS <= 1350) {
FINAL_D = FINAL_D + 1;
COLA_D[FINAL_D] = AV;
System.out.println("");
System.out.println(" La distancia es: " + DIS);
} else {
FINAL_E = FINAL_E + 1;
COLA_E[FINAL_E] = AV;
System.out.println("");
System.out.println(" La distancia es: " + DIS);
}
}
}
}
}
FINAL_A = -1;
}
} else {
if (FINAL_B > -1) {
if (FRENTE_B < FINAL_B) {
FRENTE_B = FRENTE_B + 1;
COLA_A[FRENTE_B] = " ";
TIEMPO = -1;
} else {
FRENTE_B = -1;
FINAL_B = -1;
}
} else {
if (FINAL_C > -1) {
if (FRENTE_C < FINAL_C) {
FRENTE_C = FRENTE_C + 1;
COLA_A[FRENTE_C] = "";
TIEMPO = -1;
} else {
FRENTE_C = -1;
FINAL_C = -1;
}
} else {
if (FINAL_D > -1) {
if (FRENTE_D < FINAL_D) {
FRENTE_D = FRENTE_D + 1;
COLA_A[FRENTE_D] = "";
TIEMPO = -1;
} else {
FRENTE_C = -1;
FINAL_C = -1;
}
} else {
if (FINAL_E > -1) {
if (FRENTE_E < FINAL_E) {
FRENTE_E = FRENTE_E + 1;
COLA_A[FRENTE_E] = "";
TIEMPO = -1;
} else {
FRENTE_E = -1;
FINAL_E = -1;
}
}
}
}
}
Universidad Nacional Ing. Sistemas e Informática
Del Santa
}
}
System.out.println("Cola vacia ");
}
op.LLENAR_COLA();
op.MOSTRAR();
break;
case 2:
op.ATENDER_CLIENTE();
op.MOSTRAR();
break;
case 3:
System.exit(0);
break;
}
} while (Opcion != 3);
}
}
o PSEUDOCÓDIGO:
Prioridad A, B, C, D, E
Distancia de viaje (Km):
A: Menor de 500
B: Entre 500 – 800
C: Entre 801 – 1000
D: Entre 1001 – 1350
E: Mayor de 1350
LLENAR COLAS
Universidad Nacional Ing. Sistemas e Informática
Del Santa
FRENT_A ← 0, FRENT_B ← 0,
FRENT_C ← 0, FRENT_D ← 0,
FRENT_E ← 0
FIN_A ← 0, FIN_B ← 0, FIN_C ← 0,
FIN_D ← 0, FIN_E ← 0
INICIO
Leer avion (AV), Leer Distancia de destino(DIS)
Si DIS > 0 y DIS < 500 Entonces
FIN_A ← FIN_A + 1
COLA[FIN_A] ← AV
Sino
Si DIS >= 500 y DIS <= 800 Entonces
FIN_B ← FIN_B + 1
COLB[FIN_B] ← AV
Sino
Si DIS >= 801 y DIS<= 1000 Entonces
FIN_C ← FIN_C + 1
COLC[FIN_C] ← AV
Sino
Si DIS >= 1001 y DIS <= 1350 Entonces
FIN_D ← FIN_D + 1
COLD[FIN_D] ← AV
Sino
FIN_E ← FIN_E + 1
COLE[FIN_E] ← AV
Fin_Si
Fin_Si
Fin_Si
Fin_Si
FIN
//Atender al Cliente
Tiempo ← 0
INICIO
Si FRENT_A < FIN_A Entonces
Mostrar ColaA(FRENT_A + 1) // Avion por Salir
Sino
Si FRENT_B < FIN_B Entonces
Mostrar ColaA(FRENT_B + 1)
Sino
Si FRENT_C < FIN_C Entonces
Mostrar ColaC(FRENT_C + 1)
Sino
Si FRENT_D < FIN_D Entonces
Mostrar ColaD(FRENT_D + 1)
Sino
Si FRENT_E < FIN_E Entonces
Mostrar ColaE(FRENT_E + 1)
Fin_Si
Universidad Nacional Ing. Sistemas e Informática
Del Santa
Fin_Si
Fin_Si
Fin_Si
Fin_Si
Repetir hasta que tiempo >= 7
tiempo ← tiempo + 1
Si tiempo >= 6 Entonces // Cada 6 segundos como Ejemplo
Si FIN_A > 0 Entonces
Si FRENT_A < FIN_A Entonces
FRENT_A ← FRENT_A + 1
Cola(FRENT_A) ← vacio
tiempo ← 0
Sino
FRENT_A ← 0
FIN_A ← 0
Fin_Si
Sino
Si FIN_B > 0 Entonces
Si FRENT_B < FIN_B Entonces
FRENT_B ← FRENT_ B + 1
Cola(FRENT_ B) ← vacio
tiempo ← 0
Sino
FRENT_ B ← 0
FIN_ B ← 0
Fin_Si
Sino
Si FIN_C > 0 Entonces
Si FRENT_ C < FIN_ C Entonces
FRENT_ C ← FRENT_ C + 1
Cola(FRENT_ C) ← vacio
tiempo ← 0
Sino
FRENT_ C ← 0
FIN_ C ← 0
Fin_Si
Sino
Si FIN_D > 0 Entonces
Si FRENT_ D < FIN_ C Entonces
FRENT_ D ← FRENT_ D + 1
Cola(FRENT_ D) ← vacio
tiempo ← 0
Sino
FRENT_ D ← 0
FIN_ D ← 0
Fin_Si
Sino
Si FIN_E > 0 Entonces
Si FRENT_ E < FIN_ C Entonces
FRENT_ E ← FRENT_ E + 1
Universidad Nacional Ing. Sistemas e Informática
Del Santa
Cola(FRENT_ E) ← vacio
tiempo ← 0
Sino
FRENT_ E ← 0
FIN_ E ← 0
Fin_Si
Fin_Si
Fin_Si
Fin_Si
Fin_Si
Fin_Si
Fin_Si
Fin_Repetir
Escribir “Cola vacia”
FIN