public NodoUsuario(string name, string usuario, string psw)
 {
     nombre     = name;
     user       = usuario;
     contrasena = psw;
     pila       = null;
     cola       = null;
 }
        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 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");
     }
 }