Professional Documents
Culture Documents
Aed2 - t3 - Tafur Valdivia, Roberto Jhuliño
Aed2 - t3 - Tafur Valdivia, Roberto Jhuliño
FACULTAD DE INGENIERÍA
GRUPO: B
CAJAMARCA-PERÚ
Ejercicio 1
Código Java
- Clase Nodo
package comparacionColas;
private T value;
private Nodo<T> next;
public T getValue() {
return value;
}
@Override
public String toString() {
return value.toString();
}
}
- Clase ListaEnlazada
package comparacionColas;
public ListaEnlazada() {
first = null;
end = null;
length = 0;
}
public T deleteHeat() {
T element = null;
if(!isEmtpty()) {
if(first == end) {
element = first.getValue();
first = end = null;
}else {
element = first.getValue();
first = first.getNext();
}
length--;
}else {
System.out.println("Sorry, the list is empty!!!");
}
return element;
}
/*
public Curso eliminarFin() {
if(end == null) {
System.out.println("La lista está vacía");
return null;
}
Curso curso = end.getDato();
if(end == first) {
end = first = null;
}else {
Nodo temp = first;
while (temp.getSiguiente() != end) {
temp = temp.getSiguiente();
}
temp.setSiguiente(null);
end = temp;
}
return curso;
}
*/
@Override
public String toString() {
String s = "[";
if(!isEmtpty()) {
Nodo<T> aux = first;
while(aux != null) {
s += aux.getValue() + ", ";
aux = aux.getNext();
}
s = s.substring(0,s.length() - 2);
}
s += "]";
return s;
}
- Clase cola
package comparacionColas;
public Cola() {
super();
}
public T dequeue() {
return super.deleteHeat();
}
@Override
public String toString() {
String s = "[";
if(!isEmtpty()) {
Nodo<T> aux = super.first;
while(aux != null) {
s += aux.getValue() + ", ";
aux = aux.getNext();
}
s = s.substring(0,s.length() - 2);
}
s += "]";
return s;
}
}
- Clase Persona
package comparacionColas;
String transaction;
int timeSeconds;
@Override
public String toString() {
- Clase prueba
package comparacionColas;
import java.util.Random;
System.out.println("----------------------------------------------------------------------");
}
if(queue.getLength() != 0) {
Persona aux = queue.dequeue();
queue5.enqueue(aux);
t5 += 5 + aux.timeSeconds;
}
if(queue.getLength() != 0) {
Persona aux = queue.dequeue();
queue6.enqueue(aux);
t6 += 5 + aux.timeSeconds;
}
}
System.out.println("Caja 1: " + queue4);
System.out.println("Caja 2: " + queue5);
System.out.println("Caja 3: " + queue6);
System.out.println("..............");
System.out.println("Tiempo total caja 1: " + t4);
System.out.println("Tiempo total caja 2: " + t5);
System.out.println("Tiempo total caja 3: " + t6);
System.out.println();
System.out.println("----------------------------------------");
int max1 = max(t1,t2,t3);
time1 += max1;
int max2 = max(t4,t5,t6);
time2 += max2;
System.out.println("The best type is: " + bestQueue(max1, max2));
}
System.out.println("---------------------------------------------------------------");
System.out.println("\n\f Average time in the first queue: " +(time1/21));
System.out.println("\n\f Average time in the second queue: " +(time2/21));
- Analizando el funcionamiento de la primera cola : En esta cola se ha creado una cola general (similar a
la cola en el Banco de la Nación en donde hay una cola general hasta estar a unos metros de las
ventanillas), en esta parte se ha considerado que todas las ventanillas están vacías y que la primera
persona que va a ser atendida pasa a la ventanilla 1, y la segunda persona pasa a la ventanilla 2 y la
tercera persona pasa a la ventanilla 3, luego con la cuarta persona se espera hasta que una de las
ventanillas se libere ( una de las tres persona en pasar a las ventanillas va a realizar su transacción en
menos tiempo que los otro dos y se va a retirar ya del banco), entonces luego de encontrar cual fue la
persona que salió ya, la cuarta persona en la cola general pasa a esa ventanilla. Y así sucesivamente
se va repitiendo hasta que se termina de atender a todas las personas de la cola general. Para poder
determinar cuál ha sido el tiempo total del banco en atender a todas las personas, en cada ventanilla
se va registrando el tiempo que tardó en atender desde la primera persona hasta la última, luego de
encontrar los tiempos de las tres ventanillas se determina cuál es el mayor y ese será el tiempo que
tardó el banco en atender a todos sus clientes.
- Analizando el funcionamiento de la segunda cola: En esta cola se intenta simular 3 colas dentro del
banco (en otras palabras podemos decir que cada ventanilla tiene su cola), es como si la primera
persona iría a la cola 1, la segunda persona a la cola 2, la tercera persona a la cola 3, la cuarta persona
a la cola 4, la quinta persona a la cola 5 y así sucesivamente. Si el experimento cuenta con 21
personas, entonces cada ventanilla atendería a 7 personas cada una. En cada ventanilla se registra el
tiempo que tarda en atender a todos los clientes, y luego se evalúa a cada ventanilla para determinar
cuál es el tiempo mayor en atención y este sería el tiempo que tardó el banco en atender a todos sus
clientes. Cabe resaltar que en ambos casos de tipos de colas el tiempo de atención de cada ventanilla
está compuesto por la suma del tiempo de 5 segundos que tarda el cliente en llegar a la ventanilla y
el tiempo de su transacción de todos los clientes que fueron atendidos en dicha ventanilla.
- Finalmente analizamos cual tipo de cola es mejor: Como el experimento consta de repetir 10 veces el
análisis de la cola tipo 1 y de la cola tipo2, entonces en cada vez que se analiza se encuentra el tiempo
de la cola tipo 1 y se guarda ese tiempo en una variable t1 y lo mismo con la cola de tipo 2 se guarda
su tiempo en una variable t2. Ya al finalizar se divide a t1/21 y t2/21 para poder determinar un
promedio del tiempo que tardaría el banco en atender a todos sus clientes con cada tipo de cola.
Y como podemos observar en la prueba el resultado es siempre que el mejor es la cola de tipo1.
En conclusión, se afirma que el banco debería implementar el tipo de cola 1 para poder atender a
todos sus clientes en el menor tiempo posible.
Ejercicio 2
Código Java
- Clase Nodo
package pilasPrefija;
@Override
public String toString() {
return value.toString();
}
}
- Clase ListaEnlazada
package pilasPrefija;
public Lista_Enlazada() {
first = null;
length = 0;
}
length++;
}
if(first == null) {
first = newValue;
}
else {
Nodo<T> previuos = first;
while(previuos.getNext() != null) {
previuos = previuos.getNext();
}
previuos.setNext(newValue);
}
length--;
@Override
public String toString() {
String s = "[";
if(!isEmpty()) {
Nodo<T> temp = first;
while(temp != null) {
s += temp.getValue() + ", ";
temp = temp.getNext();
}
public T deleteFirst() {
T element = null;
if(!isEmpty()) {
element = first.getValue();
first = first.getNext();
length --;
}
return element;
}
}
System.out.println("Invalid position...");
}
return elemet;
}
public Object deleteEnd() {
Object element = null;
if(first == null) {
System.out.println("The list is empty!");
}else if(first.getNext() == null) {
element = deleteFirst();
}else {
Nodo<T> temp = first;
while (temp != null) {
if(temp.getNext().getNext() == null) {
element = temp.getNext();
temp.setNext(null);
break;
}else {
temp = temp.getNext();
}
}
length --;
}
return element;
}
- Clase Pila
package pilasPrefija;
public Pila() {
super();
}
public void push(T object) {
super.addFirst(object);
}
public T pop() {
return super.deleteFirst();
}
public T peek() {
return super.first.getValue();
}
}
- Clase prueba
package pilasPrefija;
import java.util.Scanner;
public class Prueba {
static Scanner read = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("\t\tInfix to prefix");
System.out.print("Enter your expression: ");
String expression = read.nextLine();
expression = expression.replace(" ", "");
Pila<Character> stack = new Pila<>();
while(!stack.isEmpty()) {
char c = stack.pop();
int index = operators.indexOf(c);
if(index != -1) {
if(stackAux.isEmpty()) {
stackAux.push(index);
}else {
while(!stackAux.isEmpty()) {
int priorityStack = stackAux.peek()/2;
int priorityOperator = index / 2;
if(priorityStack > priorityOperator && c != '^') {
stackPrefix.push(operators.charAt(stackAux.pop()));
}else {
break;
}
}
stackAux.push(index);
}
}else if(c == ')') {
stackAux.push(-2);
}else if(c == '(') {
while(stackAux.peek() != -2) {
stackPrefix.push(operators.charAt(stackAux.pop()));
if(stackAux.isEmpty()) {
break;
}
}
if(!stack.isEmpty()) {
stackAux.pop();
}
}
else {
stackPrefix.push(c);
}
}
while(!stackAux.isEmpty()) {
int i = stackAux.pop();
if(i != -2) {
stackPrefix.push(operators.charAt(i));
}
}