locked
Matrices RRS feed

  • Pregunta

  • Que tal, lo que pasa es que tengo un proyecto en donde tengo que tener 3 matrices, las primeras dos se van a sumar unicamente si en la matriz 1 el valor es un numero par y se guardan en la matriz 3, en caso de que no sea un numero par en la matriz 1 se guarda un cero igual en la tercera matriz.

    Las matrices son de 4 filas, 3 renglones

    Todo bien al hacer las 2 matrices, pero al presentarse la matriz 3 al parecer esta poniendo la traspuesta de la matriz 3, haciendo una matriz de 3 filas, 4 columnas y necesito ayuda porque lo tengo que entregar en unas horas, el unico problema es el acomodo de la tercer matriz que no entiendo por que se pone de esa manera :(

    Mi codigo es este:

    Console.WriteLine("Matriz 1: ");
                int[,] MAT = new int[5, 4];
                int[,] MAT2 = new int[5, 4];
                int[,] MAT3 = new int[5, 4];

                Random rnd = new Random();

                for (int i=1; i< 5; i++)
                {
                    for (int j = 1; j < 4; j++)
                    {
                        MAT[i, j] = rnd.Next(0, 10);
                        Console.SetCursorPosition(j * 3, i + 1);
                        Console.WriteLine(MAT[i, j]);
                    }
                }
                Console.WriteLine();
                Console.WriteLine("Matriz 2");
                Random r = new Random();
                for (int i = 1; i < 5; i++)
                {
                    for (int j = 1; j < 4; j++)
                    {
                        MAT2[i, j] = r.Next(0, 10);
                        Console.SetCursorPosition(j * 3, i + 8);
                        Console.WriteLine(MAT2[i, j]);
                    }
                }
                Console.WriteLine();
                Console.WriteLine("Matriz 3");

                
                for (int i = 1; i < 5; i++)
                {
                    for (int j = 1; j < 4; j++)
                    {
                        if ((MAT[i, j] % 2) == 0)
                        {
                            MAT3[i, j] = MAT2[i, j] + MAT[i, j];

                        }
                        else
                        {
                            MAT3[i, j] = 0;
                        }

                        Console.SetCursorPosition(i*4, j+15);
                        Console.WriteLine(MAT3[i, j]);

                    }
                    
                }

               
                
                Console.ReadKey();

    jueves, 23 de mayo de 2019 5:39

Respuestas

  • El problema está en el Console.SetCursorPosition, que funciona al revés de como uno pensaría, es decir, sus argumentos no son (fila, columna) sino (columna, fila):

    https://docs.microsoft.com/en-us/dotnet/api/system.console.setcursorposition?view=netframework-4.8

    Simplemente ponlos en el orden contrario dentro de tu código y debería funcionar.

    Console.SetCursorPosition(j+15, i*4);

    Dicho eso, prepárate para que te pongan una mala nota: Has cometido un error bastante serio que es indexar las matrices comenzando en uno en lugar de comenzando en cero, con lo que las has tenido que dimensionar con una fila y columna de más. Es decir, las has tenido que hacer de 5x4 en lugar de ser de 4x3, y se desperdicia todo el espacio sobrante.

    jueves, 23 de mayo de 2019 6:27
    Moderador

Todas las respuestas

  • El problema está en el Console.SetCursorPosition, que funciona al revés de como uno pensaría, es decir, sus argumentos no son (fila, columna) sino (columna, fila):

    https://docs.microsoft.com/en-us/dotnet/api/system.console.setcursorposition?view=netframework-4.8

    Simplemente ponlos en el orden contrario dentro de tu código y debería funcionar.

    Console.SetCursorPosition(j+15, i*4);

    Dicho eso, prepárate para que te pongan una mala nota: Has cometido un error bastante serio que es indexar las matrices comenzando en uno en lugar de comenzando en cero, con lo que las has tenido que dimensionar con una fila y columna de más. Es decir, las has tenido que hacer de 5x4 en lugar de ser de 4x3, y se desperdicia todo el espacio sobrante.

    jueves, 23 de mayo de 2019 6:27
    Moderador
  • Ohhhhhh okey okey, muchas gracias ya pudo quedar bien, y respecto a eso de que desperdicio espacio tambien ya lo cheque, muchas gracias !!!
    jueves, 23 de mayo de 2019 14:44