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"); } }