Académique Documents
Professionnel Documents
Culture Documents
Del Santa
Forma Infija:
A +( BCD/(E F )G)H
Forma Prefija:
A +( BCD/(E F )G)H
A +(BCD/[ EF]G)H
BC / DEFG H
A+
BC /D EFGH
A+
+ A BC / D EFGH
Forma Sufija:
A +( BCD/(E F )G)H
BCD/H
A +
BCD/H
A+
BCH
A+
BC GH
A+
BC GH
A+
ABC GH+
Ejercicio 3:
b b24 ac
2a
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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 * /
Ejercicio 4:
234567+*+*+
PASO
1
2
3
4
5
6
7
8
9
10
11
EXPO
2
3
4
5
6
7
+
*
+
*
+
7
13
65
69
207
6
5
4
3
2
PILA
2
2,3
2, 3, 4
2, 3, 4, 5
2, 3, 4, 5, 6
2, 3, 4, 5, 6, 7
2, 3, 4, 5, 13
2, 3, 4, 65
2, 3, 69
2, 207
209
Ejercicio 5:
12, 8, 3, -, /, 1, 2, 4, 6, +, *, +, +
PASO
1
2
3
4
5
EXPO
12
8
3
/
3
5
8
12
PILA
12
12, 8
12, 8, 3
12,5
2.4
Universidad Nacional
Informtica
Del Santa
6
7
8
9
10
11
12
13
1
2
4
6
+
*
+
+
Ejercicio 6:
N
S= (2 A+ ( N 1 )D)
2
Forma infija:
(N /2)( 2A+( N1)D)
Forma Prefija:
(N /2)( 2A+( N1)D)
[ N 2](2A +( N 1)D)
[ N 2]([ 2 A]+[N 1 D ])
[ N 2][+ 2 AN 1 D]
/ N 2+ 2 AN 1 D
Forma Sufija:
(N /2)( 2A+( N1)D)
N 2/(2A+(N1)D)
2A+
N 2/
2 A+
N 2/
2 A+
N 2/
2 AN 1D+
N 2/
6
10
20
21
Ing. Sistemas e
4
2
1
2.4
2.4, 1
2.4, 1, 2
2.4, 1, 2, 4
2.4, 1, 2, 4, 6
2.4, 1, 2, 10
2.4, 1, 20
2.4, 21
23.4
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
N 2/2 AN 1D+
Ejercicio 7
1R N
G= A
1R
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-/*
SEMANA #08: ALGORITMO CON PILAS
1. Codificar el algoritmo de Transformacin de una expresin Infija a
Expresin Postfija en la herramienta de programacin de laboratorio.
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) {
// TODO code application logic here
String Cadena = JOptionPane.showInputDialog("ingrese la operacion infija");
char Infija[] = new char[Cadena.length() + 1];
char Pila[] = new char[Cadena.length() + 1];
char Expo[] = new char[Cadena.length() + 1];
String Postfija = " ";
int TopePila = 0,TopeExpo = -1;
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Pila[TopePila] = '(';
for (int i = 0; i < Cadena.length(); i++) {
Infija[i] = Cadena.charAt(i);
}
int n = Cadena.length();
Infija[n] = ')';
while (TopePila != -1) {
for (int i = 0; i <= Cadena.length(); i++) {
char x = Infija[i];
if (x == '^' || x == '*' || x == '/' || x == '+' || x == '-') {
if (Pila[TopePila] == '(') {
TopePila=TopePila+1;
Pila[TopePila] = x;
} else {
if (Jerarquia(Pila[TopePila]) >= Jerarquia(x)) {
while (Pila[TopePila] != '(') {
TopeExpo=TopeExpo+1;
Expo[TopeExpo] = Pila[TopePila];
TopePila=TopePila-1;
}
if (Pila[TopePila] == '(') {
TopePila=TopePila+1;
Pila[TopePila] = x;
}
} else {
TopePila=TopePila+1;
Pila[TopePila] = x;
}
}
} else if (x == '(') {
TopePila=TopePila+1;
Pila[TopePila] = x;
} else if (x == ')') {
do {
if (Pila[TopePila] == '(') {
TopePila=TopePila-1;
} else {
TopeExpo=TopeExpo+1;
Expo[TopeExpo] = Pila[TopePila];
TopePila=TopePila-1;
}
} while (Pila[TopePila + 1] != '(');
} else {
TopeExpo=TopeExpo+1;
Expo[TopeExpo] = x;
}
}
}
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
}
System.out.println(" ");
System.out.println("Pila B:");
for (int i = 6; i < contab + 1; i++) {
System.out.print("[" + pilaB[i] + "]");
}
System.out.println(" ");
System.out.println("Pila C:");
for (int i = 11; i < contac + 1; i++) {
System.out.print("[" + pilaC[i] + "]");
}
System.out.println(" ");
System.out.println("Arreglo:");
for (int i = 1; i < 16; i++) {
System.out.print("[" + arreglo[i] + "]");
}
System.out.println(" ");
}
public void Ingresar() {
dato = JOptionPane.showInputDialog("Ingrese dato: ").charAt(0);
}
public void Eliminar() {
dato2 = JOptionPane.showInputDialog("Ingrese dato a eliminar:
").charAt(0);
for (int i = 1; i < 16; i++) {
if (arreglo[i] == dato2) {
arreglo[i] = ' ';
if (i < 6) {
pilaA[i] = ' ';
} else if (i > 5 & i < 11) {
pilaB[i] = ' ';
} else if (i > 10) {
pilaC[i] = ' ';
}
} else {
System.out.println("El dato no se encuentra en el arreglo");
break;
}
}
}
}
package ejercicio.pkg5;
import javax.swing.JOptionPane;
public class Ejercicio5 extends Mostrar {
public static void main(String[] args) {
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
topea<-topea+1;
pilaA[topea] <- dato
arreglo[topea] <- dato
contaa<-contaa+1
Fin_si
Si (topea + 1 = frentec) Entonces
Mostrar "Cola B llena "
Sino
Mostrar "El dato " , dato " fue ingresado en la Pila B"
frenteb <- 6
topeb=topeb+1
pilaB[topeb] <- dato
arreglo[topeb] <- dato
contab=contab+1
Fin_si
Si (topea + 1 =16) Entonces
Mostrar "Cola C llena"
Sino
Mostrar "El dato " , dato " fue ingresado en la Pila C"
frentec<-11;
topec<-topec+1
pilaC[topec]<-dato
arreglo[topec]<-dato
contac=contac+1
Fin_si
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 "Pila A:"
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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')");
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;
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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;
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];
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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 vaca.");
}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;
}
}
c=0;
}
public void EliminacionPreferencial(){
if(FrentePre==0){
ColaPreferencial[FrentePre]=' ';
FrentePre=FrentePre+1;
}else{
if(FrentePre == ColaPreferencial.length){
System.out.println("Cola preferencial vaca.");
}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;
}
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
}
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 opcin a elegir: "+"\n1) Ingreso de una persona a la
cola."+"\n2) Atencin de una persona."+"\n3) Salir."));
switch (opcion2){
case 1:
he.Dato();
he.Insersin();
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 opcin a elegir: "+"\n1) Ingreso de una persona
a la cola."+"\n2) Atencin de una persona."+"\n3) Salir."));
switch (opcion2){
case 1:
he.Dato();
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
he.InsersinPreferencial();
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
Final 0 , frente 0
Inicio
Leer dato
Si final=N entonces
Escribir COLA LLENA
Sino
Final final LA+1
COLA(final) dato
Nc final(frente)+1
Si frente = 0 entonces
Frente 1
Nc final
Fin_si
Fin_si
FIN
MESAPARTES
Inicio
Si olvido es V entonces
Llamar procedimiento RETORNO
Sino
Si frente=0 entonces
Mostrar COLA VACIA
Sino
dato COLA(frente)
Si frente = final entonces
Frente 0
Final 0
Sino
Frente frente+1
Fin_si
Desde i=1 hasta N-1
COLA(i) COLA (i+1)
Fin_desde
Frente 1
Final final -1
Fin_si
RETORNO
Inicio
Tope 0
Si final <= 0 entonces
Final final +1
COLA((final) COLA(frente)
Sino
Desde j =Nc hasta 10 hacer
Tope tope+1
PILA (tope) cola
Fin _desde
COLA (10) COLA (frente)
P tope
Desde dato=1 hasta tope hacer
COLA(10+k) PILA(p)
Universidad Nacional
Informtica
Del Santa
P tope -1
Fin_desde
Fin_si
Desde i=1 hasta N-1
Ing. Sistemas e
Forma Infija:
(A+((B^2C)^ ) / ((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^2C)^ ) / ((D^1/3)E/F)
( A + ( ( B2^ - C ) ^ 12/ ) / ( ( D13/^ ) E F / )
( A + ( ( B2^C-) ^12/ ) / (D 1 3 / ^ E F / - )
( A + ( B 2 ^ C 1 2/ ^) / (D 1 3 / ^ E F / - )
( A B 2 ^ C 1 2/ ^ + ) / (D 1 3 / ^ E F / - )
A B 2 ^ C 1 2/ ^ + D 1 3 / ^ E F / - /
8. Se tiene una pila con los primeros 10 nmeros naturales, y una cola
con los 10 siguientes, escriba el algoritmo en pseudo cdigo que
utilizando las operaciones bsicas 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.
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
CODIGO EN JAVA
package ejercicio_08;
import javax.swing.JOptionPane;
public class Ejercicio_08 {
public static void main(String[] args) {
//PILA
int pila[] = new int[10];
int tope = 0;
int i, j = 1, acum = 1;
if (tope == 10) {
JOptionPane.showMessageDialog(null, "PILA LLENA");
} else {
for (i = 0; i < 10; i++) {
tope = tope + 1;
pila[i] = j;
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;
}
if (frente == -1) {
frente = 1;
}
}
System.out.println(" PILA " + multi);
suma = multi + acum;
System.out.println("LA SUMA TOTAL ES DE: " + suma);
}
}
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
CDIGO JAVA:
package ejercicios_semana10;
import java.util.Scanner;
public class Ejercicio1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Ingrese tamao de la cola: ");
int TAM = in.nextInt();
String C[] = new String[TAM];
for (int i = 0; i < C.length; i++) {
C[i] = " ";
}
int OPCION, FINAL=-1, FRENTE=-1, OP, REING=10, LPRE;
String VALOR, z;
do {
System.out.println("\n" + "1)Ingresar" + "\t" + "2)Atender");
OP = in.nextInt();
if (OP == 1) {
System.out.println("Ingrese valor: ");
VALOR=in.next();
if(FINAL==C.length-1){
System.out.println("**COLA LLENA**");
}else{
if (FRENTE==-1) {
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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;
}
}
}
}else{
System.out.println("Solo digite 1 o 2.");
}
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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);
}
}
PSEUDOCDIGO:
{frente=0;final=0}
Inicio
Si frente=0 entonces
Escribir La Cola vaca no hay a quien atender
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 vaca 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
Informtica
Del Santa
Ing. Sistemas e
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
estn dentro del ascensor (peticiones internas) y las de los que estn fuera
(peticiones externas). Estas ltimas slo sern 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 segn 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 segn 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 simulacin.
La visualizacin del proceso se puede realizar utilizando un mtodo
MOVER_ASCENSOR que muestra por pantalla el movimiento del ascensor. Este
mtodo responde al siguiente perfil: MOVER_ASCENSOR (desde, hasta: 0..N);
donde desde indica la posicin actual del ascensor y hasta, el piso al que debe
ir.
CDIGO JAVA:
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
PSEUCDIGO:
INICIO
Leer peticin
SI peticin = n + 1 entonces
finaliza simulacin
caso contrario
SI peticin 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
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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: Cul es
la salida para la entrada "examen"?
1.
2.
3.
4.
Universidad Nacional
Informtica
Del Santa
5.
6.
7.
8.
9.
CDIGO JAVA:
package ejercicios_semana10;
public class Ejercicio3 {
int FRENTE=0;
int FINAL=5;
int N=6;
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 vaca.");
}
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();
}
public static void main(String[] args) {
Ejercicio3 op=new Ejercicio3();
op.SACAR();
op.SACARPILA();
}
}
PSEUDOCDIGO:
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Pila[T
ope]
n
e
m
a
x
e
CDIGO JAVA:
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
package ejercicios_semana10;
//codigo ded oscar mucho mejor
public class Ejercicio4 {
public static void main(String[] args) {
String[] FRASE = {"dabalearrozalazorraelabad"};
int INDICE=(int)(Math.random()*FRASE.length);
System.out.println("La frase: "+ FRASE[INDICE]);
if (PALINDROMO(FRASE[INDICE]))
System.out.println("Es Palindromo.");
else
System.out.println("No es Palindromo.");
}
static boolean PALINDROMO(String FRASE) {
//QUITAR ESPACIOS Y CONVERTIRLO A MINUSCULAS PARA HACER LAS
COMPARACIONES
String MODIFICADO = FRASE.replaceAll(" ","").toLowerCase();
int i=0;
while (i < MODIFICADO.length()/2) {
if (MODIFICADO.charAt(i)!
=MODIFICADO.charAt(MODIFICADO.length()-1-i))
return false;
i++;
}
return true;
}
}
PSEUDOCDIGO:
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
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
CDIGO JAVA:
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
}
public void INGRESO() {
System.out.println("Ingrese MATRICULA de Avioneta: ");
String PLACA_AVIO = te.next();
if (CONT == COLA.length) {
System.out.println("**ESTACIONAMIENTO LLENO**");
} else {
CONT++;
if (FRENTE > 0 && FRENTE <= COLA.length - 1) {
FRENTE--;
COLA[FRENTE] = PLACA_AVIO;
} else {
if (FRENTE == 0) {
for (int i = FINAL; i >= FRENTE; i--) {
COLA[i + 1] = COLA[i];
}
COLA[FRENTE] = PLACA_AVIO;
FINAL++;
} else {
FINAL++;
COLA[FINAL] = PLACA_AVIO;
if (FRENTE == -1) {
FRENTE = 0;
}
}
}
MOSTRAR();
}
}
public void SALIDA() {
POS = -1;
if (CONT == 0) {
System.out.println("**ESTACIONAMIENTO VACIO**");
} else {
System.out.println("Ingrese MATRICULA de Avioneta que desee que
salga: ");
String matri = te.next();
for (int i = FRENTE; i <= FINAL; i++) {
if (COLA[i].equals(matri)) {
POS = i;
break;
}
}
if (POS == -1) {
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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("Nde Matricula-Avioneta a salir: " +
COLA[POS]);
COLA[POS] = "";
FINAL--;
MOSTRAR();
REINGRESO();
System.out.println("**(REINGRESANDO AVIONETAS)**");
}
}
}
}
MOSTRAR();
}
public void RETIRADA() {
K = 0;
for (int i = FINAL; i > POS; i--) {
RETIRADAS[K] = COLA[i];
COLA[i] = "";
K++;
FINAL--;
}
}
public void REINGRESO() {
for (int i = POS; i >= (FRENTE + 1); i--) {
COLA[i] = COLA[i - 1];
COLA[i - 1] = "";
}
FRENTE++;
FINAL++;
K--;
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
while (K != -1) {
FINAL++;
COLA[FINAL] = RETIRADAS[K];
K--;
}
}
}
o Java main class: Ejercicio5_implementacion
package ejercicios_semana10;
import java.util.Scanner;
public class Ejercicio5_implementacion {
public static void main(String[] args) {
Scanner t = new Scanner(System.in);
Ejercicio5_metodo e5 = new Ejercicio5_metodo();
do {
System.out.println(" ESTACIONAMIENTO DE AVIONES");
System.out.println(" ---------------------------");
System.out.println("1)INGRESO\t2)SALIDA\t3)TERMINAR PROGRAMA");
int opc = t.nextInt();
if (opc == 1) {
e5.INGRESO();
} else if (opc == 2) {
e5.SALIDA();
}else if(opc==3){
System.exit(0);
}
} while (true);
}
}
PSEUDOCDIGO:
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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 pseudocdigo de las operaciones METER y SACAR de una bicola,
donde la cola de un extremo guarda cdigos de Radios y la del otro extremo
cdigos de Televisores.
CDIGO JAVA:
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
}
public void INGRESARFINAL() {
if (FIN == BICOLA.length - 1) {
System.out.println("COLA POR EL FINAL LLENA");
} else {
X = JOptionPane.showInputDialog(null, "Ingrese una letra");
FIN++;
BICOLA[FIN] = X;
}
for (int i = 0; i < BICOLA.length; i++) {
System.out.print(" [ " + BICOLA[i] + " ] ");
}
}
public void ELIMINAR() {
if (FRENTE == BICOLA.length) {
System.out.println("COLA VACIA");
} else {
BICOLA[FRENTE] = " ";
FRENTE++;
}
for (int i = 0; i < BICOLA.length; i++) {
System.out.print(" [ " + BICOLA[i] + " ] ");
}
}
}
o Java main class: Ejercicio6_implementacion
package ejercicios_semana10;
import javax.swing.JOptionPane;
public class Ejercicio6_implementacion {
public static void main(String[] args) {
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));
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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);
}
}
PSEUDOCDIGO:
Mtodos:
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
Caso contrario
Leer x
Si(frente>0)entonces
Frentefrente-1
Fin si
Bicola[frente] x
Si (fin=0)entonces
Finfin+1
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Mostrar cola
//ingreso final
Si (fin=bicola.length-1)entonces
Mostrarcola 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 cdigo de radio 2.-ingrese cdigo 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
En un archivo de texto se encuentran los resultados de una competicin de tiro
al plato, de tal forma que en cada lnea se encuentra Apellido, Nombre, nmero
de dorsal y nmero de platos rotos. Se debe escribir el algoritmo
(Pseudocdigo), que lea el archivo de la competicin y determine los tres
primeros. La salida ha de ser los tres ganadores y a continuacin los
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
CDIGO JAVA:
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
DORSAL[FINAL] = dorsal;
PLATO[FINAL] = platos;
}
if (FRENTE == -1) {
FRENTE = 0;
}
}
public void LISTARGENERAL() {
if (FINAL == -1) {
System.out.println("No existe ningun registro ...");
} else {
System.out.println("Puesto\t Nombres\t Apellidos\t Dorsal\t Platos
\n");
System.out.println("=============================
=====\n");
int i = 0;
while (FRENTE <= FINAL) {
System.out.println("" + (i + 1) + " \t" + NOMBRE[FRENTE] + "\t"
+ APELLIDO[FRENTE] + "\t" + DORSAL[FRENTE] + "\t"
+ PLATO[FRENTE] + "\n");
FRENTE++;
i++;
}
}
}
public void LISTAR() {
int mayor = 0;
int j = 0;
if (FINAL == -1) {
System.out.println("No existe ningun registro ...");
} else {
System.out.println("Puesto\t Nombres\t Apellidos\t Dorsal\t Platos
\n");
//
System.out.println("=============================
======\n");
for (int i = 0; i < 3; i++) {
mayor = PLATO[i];
for (int k = i + 1; k <= FINAL; k++) {
if (mayor < PLATO[k]) {
mayor = PLATO[k];
j = k;
}
}
System.out.println("" + (i + 1) + " \t" + NOMBRE[j] + "\t" +
APELLIDO[j] + "\t" + DORSAL[j] + "\t" + PLATO[j] + "\n");
int aux = PLATO[j];
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
PLATO[j] = PLATO[i];
PLATO[i] = aux;
}
}
}
}
o Java main class: Ejercicio7_implementacion
package ejercicios_semana10;
import java.util.Scanner;
public class Ejercicio7_implementacion {
public static void main(String[] args) {
Scanner t = new Scanner(System.in);
Ejercicio7_metodo_extends op = new Ejercicio7_metodo_extends();
int Opcion = 0;
do {
System.out.println("\nMENU DE OPCIONES:\t");
System.out.println("REGISTRO=>(1) \nLISTA GENERAL=>(2)\nLISTA
GANADORES=>(3)\nSALIR ==> (4)");
System.out.println("ELIJA UNA OPCION");
Opcion = t.nextInt();
switch (Opcion) {
case 1:
op.INGRESARDATOS();
op.INGRESAR();
break;
case 2:
op.LISTARGENERAL();
break;
case 3:
op.LISTAR();
break;
case 4:
System.exit(0);
break;
}
} while (Opcion != 5);
}
}
PSEUDOCDIGO:
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
INICIO
Ingrese Datos (Apellidos[Ap], Nombre[Nom], Numero de dorsal[Dor], Platos
rotos[Plat]]
Ingrese numero de Datos [N>3]
Si Fin4 >= N entonces
Escribir Cola llena
Caso contrario
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
Algoritmo para buscar los tres primeros mayores
INICIO
i 1; j 0;
Mayor 0
Mientras [i <=3] hacer
Mayor = COLA [1]
j1
Mientras k=2 <= Fin4 hacer
Si Mayor < COLA4 [k] Entonces
Mayor COLA4 [k]
jk
Fin_Si
kk+1
Fin_Mientras
Escribir:
COLA1 [j], COLA1 [j]
COLA2 [j], COLA2 [j]
COLA3 [j], COLA3 [j]
COLA4 [j], COLA4 [j]
i i+1
Fin_Mientras
L=1
Mientras L <= Fin4 hacer
Si COLA4 [L] <> Vacio Entonces
Escribir:
COLA1 [L]
COLA2 [L]
COLA3 [L]
COLA4 [L]
Fin_Si
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
LL+1
Fin_Mientras
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 segn
el destino de la aeronave. Destinos de menos de 500 km tienen la mxima
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 una aeronave recibe cierta seal se coloca en la cola que
le corresponde y empieza a contar el tiempo de espera. Los despegues se
realizan cada 6 minutos segn 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 ms 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 avin saldr un mensaje
con las caractersticas del vuelo y el tiempo total de espera.
CDIGO JAVA:
package ejercicios_semana10;
import java.util.Scanner;
public class Ejercicio8 {
int n = 3;
String[] COLA_A = {" "," "," "};
String[] COLA_B = {" "," "," "};
String[] COLA_C = {" "," "," "};
String[] COLA_D = {" "," "," "};
String[] COLA_E = {" "," "," "};
int FRENTE_A = -1, FRENTE_B = -1, FRENTE_C = -1, FRENTE_D = -1,
FRENTE_E = -1;
int FINAL_A = -1, FINAL_B = -1, FINAL_C = -1, FINAL_D = -1, FINAL_E = -1,
DIS;
int TIEMPO = -1;
String AV;
Scanner t = new Scanner(System.in);
public void LLENAR_COLA() {
System.out.println(" ingresar el avion");
AV = t.next();
System.out.println("ingresar la distancia");
DIS = t.nextInt();
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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;
}
}
}
}
}
}
}
}
System.out.println("Cola vacia ");
}
public void MOSTRAR() {
for (int i = 0; i < 3; i++) {
System.out.println("EL AVION ES:" + COLA_A[i] + "\n" + "EL AVION
ES:" + COLA_B[i] + "\n" + "EL AVION ES:" + COLA_C[i] + "\n" + "EL AVION
ES:" + COLA_D[i] + "\n" + "EL AVION ES:" + COLA_E[i] + "\n");
}
}
public static void main(String args[]) {
Scanner t = new Scanner(System.in);
Ejercicio8 op = new Ejercicio8();
int Opcion = 0;
do {
System.out.println("1.llenar cola \n2.atender cliente \n3.salir");
System.out.println("Escriba opcion");
Opcion = t.nextInt();
switch (Opcion) {
case 1:
op.LLENAR_COLA();
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
op.MOSTRAR();
break;
case 2:
op.ATENDER_CLIENTE();
op.MOSTRAR();
break;
case 3:
System.exit(0);
break;
}
} while (Opcion != 3);
}
}
o PSEUDOCDIGO:
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
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
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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
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
Universidad Nacional
Informtica
Del Santa
Ing. Sistemas e
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
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