Skip to content

Commit 0ed9137

Browse files
authored
Merge pull request mouredev#5678 from TofeDev/r07
#7 - Java
2 parents 0f43888 + 2e49c8f commit 0ed9137

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
import java.util.Scanner;
2+
import java.util.Stack;
3+
import java.util.LinkedList;
4+
import java.util.Queue;
5+
6+
public class TofeDev {
7+
/* EJERCICIO:
8+
* Implementa los mecanismos de introducción y recuperación de elementos propios de las
9+
* pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
10+
* o lista (dependiendo de las posibilidades de tu lenguaje).
11+
*
12+
* DIFICULTAD EXTRA (opcional):
13+
* - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
14+
* de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
15+
* que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
16+
* Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
17+
* el nombre de una nueva web.
18+
* - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
19+
* impresora compartida que recibe documentos y los imprime cuando así se le indica.
20+
* La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
21+
* interpretan como nombres de documentos.
22+
*/
23+
public class Navegador {
24+
25+
public static void main(String[] args) {
26+
stackNavegacion();
27+
}
28+
29+
public static void stackNavegacion() {
30+
Stack<String> historial = new Stack<>();
31+
Scanner scan = new Scanner(System.in);
32+
int pointerIndex = 0;
33+
34+
while (true) {
35+
if (!historial.isEmpty()) {
36+
System.out.println("---------------------------");
37+
historial.forEach(h -> System.out.printf("%s | ", h));
38+
System.out.println("\n" + "---------------------------");
39+
System.out.print("Ingrese la 'página' o 'adelante' para avanzar, 'atras' para retroceder, o 'salir' para finalizar: ");
40+
} else {
41+
System.out.println("Ingrese la página a visitar: ");
42+
}
43+
44+
String comando = scan.next();
45+
46+
switch (comando) {
47+
case "adelante":
48+
if (pointerIndex < historial.size() - 1) {
49+
pointerIndex++;
50+
System.out.printf("Visualizando la página %s\n\n", historial.get(pointerIndex));
51+
} else {
52+
System.out.println("No hay más historial hacia adelante\n\n");
53+
}
54+
break;
55+
56+
case "atras":
57+
if (pointerIndex > 0) {
58+
pointerIndex--;
59+
System.out.printf("Visualizando la página %s\n\n", historial.get(pointerIndex));
60+
} else {
61+
System.out.println("No hay más historial hacia atrás\n\n");
62+
}
63+
break;
64+
65+
case "salir":
66+
System.out.println("Saliendo del navegador");
67+
scan.close();
68+
System.exit(0);
69+
break;
70+
71+
default:
72+
System.out.printf("Visualizando la página %s\n\n", comando);
73+
historial.add(comando);
74+
pointerIndex = historial.size() - 1;
75+
break;
76+
}
77+
}
78+
}
79+
}
80+
81+
public class Impresora {
82+
83+
public static void main(String[] args) {
84+
colaImpresora();
85+
}
86+
87+
public static void colaImpresora() {
88+
Queue<String> porImprimir = new LinkedList<>();
89+
Scanner scanner = new Scanner(System.in);
90+
91+
System.out.println("******************************************************************");
92+
System.out.println("Ingrese 'agregar' para agregar un archivo a la cola de impresión");
93+
System.out.println("Ingrese 'imprimir' para empezar a imprimir un documento de la cola");
94+
System.out.println("Ingrese 'mostrar' para mostrar todos los documentos en la cola");
95+
System.out.println("Ingrese 'salir' para finalizar");
96+
System.out.println("******************************************************************");
97+
98+
while (true) {
99+
System.out.print("Acción a realizar: ");
100+
String comando = scanner.next();
101+
102+
switch (comando) {
103+
case "mostrar":
104+
System.out.println("-----------------------------------");
105+
System.out.println(String.format("Documentos en cola (%d)", porImprimir.size()));
106+
for (String doc : porImprimir) {
107+
System.out.println("- " + doc);
108+
}
109+
break;
110+
111+
case "agregar":
112+
System.out.println("-----------------------------------");
113+
System.out.print("Ingresa el nombre del documento: ");
114+
String nombre = scanner.next();
115+
porImprimir.add(nombre);
116+
break;
117+
118+
case "imprimir":
119+
System.out.println("-----------------------------------");
120+
if (porImprimir.isEmpty()) {
121+
System.out.println("No hay nada para imprimir");
122+
break;
123+
}
124+
System.out.println("Imprimiendo " + porImprimir.poll() + " ...");
125+
try {
126+
Thread.sleep(2000);
127+
} catch (InterruptedException e) {
128+
e.printStackTrace();
129+
}
130+
break;
131+
case "salir":
132+
System.out.println("Apagando la impresora");
133+
scanner.close();
134+
System.exit(0);
135+
break;
136+
default:
137+
System.out.println("Comando no reconocido");
138+
break;
139+
}
140+
}
141+
}
142+
}
143+
}

0 commit comments

Comments
 (0)