public void push(Matriz matriz) { nodoPila nuevoNodo = new nodoPila(matriz); if (primero == null) { primero = nuevoNodo; } else { nuevoNodo.siguiente = primero; primero = nuevoNodo; } }
public void encolar(Matriz matriz) { nodoCola nuevo = new nodoCola(matriz); if (primero == null) { primero = nuevo; } else { nodoAux = primero; while (nodoAux.siguiente != null) { nodoAux = nodoAux.siguiente; } nodoAux.siguiente = nuevo; } }
private void button2_Click(object sender, EventArgs e) { int x = Convert.ToInt32(textBox3.Text); int y = Convert.ToInt32(textBox4.Text); Cola colaUsu = usuario.cola; if (colaUsu == null) { usuario.cola = new Cola(); Matriz mat = new Matriz(x, y); mat = mat.crearMatriz(x, y); usuario.cola.encolar(mat); } else { Matriz mat = new Matriz(x, y); mat = mat.crearMatriz(x, y); usuario.cola.encolar(mat); } }
private void button1_Click(object sender, EventArgs e) { int x = Convert.ToInt32(textBox1.Text); int y = Convert.ToInt32(textBox2.Text); Pila pilaUsu = usuario.pila; if (pilaUsu == null) { usuario.pila = new Pila(); Matriz mat = new Matriz(x, y); mat = mat.crearMatriz(x, y); usuario.pila.push(mat); } else { Matriz mat = new Matriz(x, y); mat = mat.crearMatriz(x, y); usuario.pila.push(mat); } }
public void asignarDato(int x, int y, int dato) { Matriz mat = this; nodoMatriz aux = raiz; if ((x == 0) && (y == 0)) { raiz.numero = dato; } else { if (y == 0) { while (aux.getX() < x) { aux = aux.right; } } else if (x == 0) { while (aux.getY() < y) { aux = aux.down; } } else { while (aux.getY() < y) { while (aux.getX() < x) { aux = aux.right; } aux = aux.down; } } aux.numero = dato; } }
private void button3_Click(object sender, EventArgs e) { archivoJson atjson = new archivoJson(); archivoJson output = JsonConvert.DeserializeObject <archivoJson>(richTextBox1.Text.ToString()); try { foreach (archMatriz x in output.archivo.pila.matrices.matriz) { Console.WriteLine("Matriz para la pila:"); Console.WriteLine("Tamano x =" + x.size_x); Console.WriteLine("Tamano y =" + x.size_y); Matriz matrizNueva = new Matriz(Convert.ToInt32(x.size_x), Convert.ToInt32(x.size_y)); matrizNueva.crearMatriz(Convert.ToInt32(x.size_x), Convert.ToInt32(x.size_y)); foreach (Valor val in x.valores.valor) { //ASIGNAR VALORES EN LA MATRIZ----------------------------------------------- matrizNueva.asignarDato(Convert.ToInt32(val.pos_x), Convert.ToInt32(val.pos_y), Convert.ToInt32(val.dato)); Console.WriteLine("Dato a guardar en matriz de la pila:"); Console.WriteLine("Coordenada x " + val.pos_x); Console.WriteLine("Coordenada y " + val.pos_y); Console.WriteLine("Dato " + val.dato); } Pila pilaUsu = usuario.pila; if (pilaUsu == null) { usuario.pila = new Pila(); usuario.pila.push(matrizNueva); } else { usuario.pila.push(matrizNueva); } } MessageBox.Show("Pila cargada"); } catch (Exception ex) { MessageBox.Show("No hay matrices para la pila"); } try { foreach (Matriz1 y in output.archivo.cola.matrices.matriz) { Matriz matrizNueva = new Matriz(Convert.ToInt32(y.size_x), Convert.ToInt32(y.size_y)); matrizNueva.crearMatriz(Convert.ToInt32(y.size_x), Convert.ToInt32(y.size_y)); Console.WriteLine("Matriz cola"); Console.WriteLine("Tamano en x =" + y.size_x); Console.WriteLine("Tamano en y =" + y.size_y); foreach (Valor1 val2 in y.valores.valor) { //ASIGNAR VALORES EN LA MATRIZ DE LA COLA matrizNueva.asignarDato(Convert.ToInt32(val2.pos_x), Convert.ToInt32(val2.pos_y), Convert.ToInt32(val2.dato)); Console.WriteLine("Dato a guardar en cola:"); Console.WriteLine("Coordenada x " + val2.pos_x); Console.WriteLine("Coordenada x " + val2.pos_y); Console.WriteLine("Dato " + val2.dato); } Cola colaUsu = usuario.cola; if (colaUsu == null) { usuario.cola = new Cola(); usuario.cola.encolar(matrizNueva); } else { usuario.cola.encolar(matrizNueva); } } MessageBox.Show("Cola cargada"); } catch (Exception ex) { MessageBox.Show("No hay matrices para la cola"); } }
public void multiplicarMatrices(NodoUsuario usuario) { try { Pila userPila = usuario.pila; Cola userCola = usuario.cola; Matriz matrizPila = pila.pop(); Matriz matrizCola = cola.desenconlar(); nodoMatriz nodoMatrizCola = matrizCola.raiz; nodoMatriz nodoMatrizPila = matrizPila.raiz; nodoMatriz auxCola = nodoMatrizCola; nodoMatriz auxPila = nodoMatrizPila; string cadena = "graph { node[shape= box]; {rank=same;"; int resultado = 0; if (matrizCola.getX() == matrizPila.getY()) { while (auxCola != null) { while (nodoMatrizCola != null) { resultado += (nodoMatrizCola.numero * nodoMatrizPila.numero); nodoMatrizCola = nodoMatrizCola.right; nodoMatrizPila = nodoMatrizPila.down; } Console.Write("Coordenada: " + auxPila.getX().ToString() + "," + auxCola.getY().ToString() + "; Dato: " + resultado.ToString()); cadena += auxPila.getX().ToString() + auxCola.getY().ToString() + "[label = " + resultado.ToString() + "]"; resultado = 0; auxPila = auxPila.right; if (auxPila != null) { nodoMatrizPila = auxPila; nodoMatrizCola = auxCola; } else { auxCola = auxCola.down; nodoMatrizCola = auxCola; auxPila = matrizPila.raiz; nodoMatrizPila = auxPila; //CAMBIA DE FILA EN LA MATRIZ DE LA COLA Y PILA REGRESA A RAIZ if (auxCola != null) { cadena += "}{rank=same;"; } else { cadena += "}"; } } } string aux = ""; for (int i = 0; i < matrizCola.getY(); i++) { for (int j = 0; j < matrizPila.getX(); j++) { if (i == 0) { if (j == matrizPila.getX() - 1) { aux += j.ToString() + i.ToString() + " "; } else { aux += j.ToString() + i.ToString() + "--"; } } else { if (j == matrizPila.getX() - 1) { aux += j.ToString() + i.ToString() + "--" + j.ToString() + (i - 1).ToString() + " "; } else { aux += j.ToString() + i.ToString() + "--" + j.ToString() + (i - 1).ToString() + " "; aux += j.ToString() + i.ToString() + "--"; } } } } cadena += aux; cadena += "}"; Graficar graficar = new Graficar(); graficar.Construir(cadena, "Matriz"); graficar.GraficarEstructura("Matriz.txt", "C:/EDD"); Imagenes image = new Imagenes("Grafica de Matriz", "C:/EDD/Matriz.jpg"); image.Show(); } else { MessageBox.Show("Es imposible multiplicar entre si tales matrices" + ", así que el número de columnas de la matriz A (" + matrizCola.getX().ToString() + ") no equivale al número de filas de la matriz B(" + matrizPila.getY().ToString() + ")"); } } catch (Exception) { MessageBox.Show("Error al querer operar"); } }
public nodoPila(Matriz dato) { matriz = dato; siguiente = null; }
public nodoCola(Matriz valor) { matriz = valor; siguiente = null; }