domingo, 13 de diciembre de 2015

Proyecto de Estructura de Datos  
Tercer Avance 

Implementamos diferentes métodos para ordenar nuestras diferentes listas según como nos pide en el proyecto.

Nuestro primer método 
Nos permite ordenar una lista de calificaciones de una película.
 
En la siguiente figura nos muestra el código que esta en la clase Main que con la ayuda de Collections.reverseOrder() nos ordena de manera descendente.
 
Segundo Método:
Ordena de manera ascendente dependiendo del año de la película
 

Tercer Método:
Creamos una clase que nos ayude a ordenar alfabéticamente los títulos de las películas

 Podemos ver en el Main como lo implementamos:
 




sábado, 5 de diciembre de 2015

Proyecto de Estructura de Datos
Segundo Avance


Creación del método cargar para los diferentes archivos txt que se encuentra en la carpeta traning_set.
Éste es el archivo que deseamos cargar:


Aquí tuvimos un error al inicio con el siguiente código:



El error es: 
 

Se observa que el error es en la línea 86. Para saber con más precisión vamos a realizar un debug en esa parte.

- Se puede observar que no guarda nada en movieIDs de la variable c ya que siempre estoy inicializando c en el while y no lo estoy agregando en ni una lista por ende mi resultado se pierde.
- Al leer todo en la segunda línea si guardamos todo correctamente en datos.
- Al momento de guardar los resultados de datos a mi variable c tenemos un error porque utilizamos mal nuestro arreglo. Se guarda el valor de ratings en customerIDs ya que tenemos c.customerIDs=Integer.parseInt(datos[1]); y para el código datos[1] = 3 y por ende por no seguir el orden se provoca un error ya que datos[2] vendría ser la fecha y es un String que queremos guardar en la variable ratings que es un entero y éso provoca el error.

Para arreglar el código aplicamos el siguiente código:

 

- Cómo en el código anterior vimos que no nos guardaba nada en nuestra variable movieIDs por eso creamos una variable llamada id que se guardará el valor de lo que se quiere leer en la primera línea ya que este valor siempre va ser el mismo.

- En la siguiente figura podemos ver que guarda todo correctamente y tenemos que nuestra id siempre va ser 1

 -  Hicimos dos veces el while y podemos ver que guarda todo correctamente en la variable lista.


Deseamos cargar el archivo movie_title:

Éste es el archivo que deseamos cargar: 
Se puede observar que cada línea tiene el mismo formato por ende es más fácil y no tuvimos problema al implementarlo.








viernes, 27 de noviembre de 2015

Proyecto de Estructura de Datos
Primer Avance

Se analizó las variables a utilizar:


jueves, 26 de noviembre de 2015

Deber#3

Crear un método que verifique si una expresión tiene correctamente definidos los paréntesis.

  1. Creamos una variable llamada pila para guardar nuestra expresión ingresada por teclado.
  2.  La variable i la utilizaremos como contador
  3. Aplicamos la expresión while para recorrer toda la expresión y saldrá cuando i sea igual al tamaño de la expresión ingresada por teclado.
  4. Utilizaremos if para comparar si existe el paréntesis de apertura "(". Si es cierto lo ingresamos a la pila con push, caso contrario verificaremos si el paréntesis es de cierre ")". Si es cierto de nuevo verificará si la pila no está vacía, si es cierto elimina el ultimo valor ingresado en la pila caso contrario ingresaremos ")". Terminará hasta verificar toda la expresión.
  5. En el último if pregunta si la pila está vacía en caso de ser cierto retorna true caso contrario retorna false.
Crear un método que convierta una expresión en notación in-fix a post-fix

  1.  Hacermos for para poder ir recorriendo nuestra expresión caracter por caracter y ése se guardará en la variable "ch".
  2. Dependiendo del caso usamos un switch.
  3. Si "ch" es + o - va al método gotOper que mandamos como parámetro el carácter y la prioridad de + o - es 1.
  4. Si "ch" es * o / va al método gotOper que mandamos como parámetro el carácter y la prioridad de * o / es 2.
  5.  Si "ch" es ^ va al método gotOper que mandamos como parámetro el carácter y la prioridad de * o / es 3.
  6. Si "ch" es "(" lo agregamos a la pila theStack.
  7. Si "ch" es ")" va al método gotParen que manda como parámetro "ch"
  8. En default: Si el carácter no es un operados se lo agregará a nuestra variable String output
  9. Después del for entramos a un while que entra cuando la pila no está vacía agregaremos cada carácter a nuestro String output hasta que la pila quede vacía.
  10. El paso 8 se refiere que luego de recorrer toda la expresion con la ayuda de for ya no queda operadores al cual comparar con la pila y entonces no más lo agrega esos valores a output. Al final imprime y retorna la la variable output.


 El método gotOper:
1. Al inicio siempre la pila va a estar vacía entonces agrega ese operador en la pila.
2. Cuando no esté vacía va a entrar al while.
3. La cima de la pila es quitado y es agregado a nuestra variable opTop.
4. Si opTop es '(' se lo agrega a la pila sale del while y agrega el el valor del carácter opThis.
5. Caso contrario dependiendo si opTop es +, -, *, / y ^
+, - tiene  prec1=1. => prec2=1
*, / tiene prec1=2. => prec2=2
^ tiene prec1=3. => prec2=3 


 El método gotParen(ch)
1. Recibe el parámetro ch.
2. Si la pila no está vacía entra al while.
3. Quita el valor de la cima de la pila y lo agrega a chx
4. Si chx='(' sale del while
5. Caso contrario lo agrega a la variable output.




Crear un método que evalué una expresión en postfix
  1. Mandamos como parámetro lo valores de la variable y la expresión.
  2. Con la ayuda de for recorreremos toda la expresion1 y guardaremos a nuestra variable temporal ch carácter por carácter.
  3. Si j es menor al tamaño de la lista variables entra al if y con nuestra variable temporal v le añadiremos el nombre de la variable y su valor.
  4. Si v.mombre == a ch entonces entra al if y tomamos el valor de esa variable y lo agregaremos a la pila.
  5. Caso contrario ya al tener nuestras dos variables realizará dicha operación.
  6. En caso de que la expresion esté mal saldrá lo descrito en default.


martes, 24 de noviembre de 2015


Deber_2
Operación de Conjuntos 

Clase Conjunto

Aquí podemos observar el código de la clase conjunto donde se podrá observar los diferentes métodos que son como unión, intersección, resta y para imprimir.

Método Unión
 Utilizamos iterador para que pueda recorrer los dos conjuntos. En el segundo while podemos observar que agregamos todos los nodos del conjunto2 a unión. Para agregar el conjunto1 en unión compararemos con cada nodo que no sea igual unión y si es diferente lo agrega.


Método Intersección
 Tendremos dos tempo para respectivo conjunto. En el segundo while nos ayudará a comparar cada elemento de conjunto2 con el primer elemento del conjunto1 y luego cada elemento del conjunto2 con el siguiente elemento del conjunto1 y así sucesivamente. Se añadirá a intersección si son iguales.


Método Resta
Pudimos obersevar que es casi parecido al método unión, sólo cambió en el if que nos dice que si el elemento resta contiene al  conjunto2 lo remueve.


Mandamos como parámetro conjunto que puede ser unión, intersección o resta. 
Para que imprima línea por línea y no todo recorrido aplicamos un while.



Clase Programa

Nosotros aplicamos dos maneras de cargar el conjunto1 y conjunto2.
La primera es que cargamos cada conjunto con su respectivo método.
La segunda cargamos cada conjunto por medio de txt y guardamos los resultados en un txt.


 Se muestra el conjunto1 y el conjunto2 que se carga por medio de un txt.
La parte del comentario es cuando realizamos por el primer método.
Llamamos también al método guardar donde se colocará los resultados en un txt.

Podemos observar los métodos cargarC1 y cargarC2.

Método Guardar

Método cargar
Implementamos éste método en la clase coordenada y se lo puede observar al inicio de la clase de programa que lo importamos.

Se puede observar los resultados:



Los txt de cargarC1 y cargarC2