Cómo mostrar dos diagonales de dos matrices en un vector en Java

Iniciado por megasaw, 10 Febrero 2017, 02:31 AM

0 Miembros y 1 Visitante están viendo este tema.

megasaw

Buenas con todos, necesito ayuda ya que no sé cómo hacer lo que me piden, el código pide al usuario un tamaño N para dos matrices cuadráticas A y B que serán llenadas por él mismo, luego con las matrices llenas se debe sacar la diagonal de cada una y guardarlas en un vector de dimensión 2N. El problema es que no sé cómo colocar los valores de las diagonales en el vector, adjunto el código para que lo revisen, ¿Cómo lo hago?

Adjunto el codigo por sea caso:

Código (java) [Seleccionar]
package javaapplication10;

import java.util.*;
//Se importan las librerias necesarias

public class JavaApplication10 {

   public static void main(String[] args) {
       int n;
       Scanner sc = new Scanner(System.in);
       //Inicializo las variables a utilizar
       System.out.println("Señor usuario, por favor ingrese el tamaño de sus matrices cuadraticas");
       n = sc.nextInt();
       int matrizA[][] = new int[n][n];
       int matrizB[][] = new int[n][n];
       int vectorL[] = new int[n * 2];
       //Defino el tamaño de las matrices y el vector, y pido los datos para llenarlas
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               System.out.println("Por favor ingrese los numeros de la matriz A");
               matrizA[i][j] = sc.nextInt();
           }
       }

       for (int i = 0; i < matrizB.length; i++) {
           for (int j = 0; j < matrizB[i].length; j++) {
               System.out.println("Por favor ingrese los datos de la matriz B");
               matrizB[i][j] = sc.nextInt();
           }
       }
       System.out.println("Matriz A");
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               System.out.print(matrizA[i][j] + "\t");
           }
           System.out.println();
       }
       System.out.println("");
       System.out.println("Matriz B");
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               System.out.print(matrizB[i][j] + "\t");
           }
           System.out.println();
       }
       System.out.println("");
       System.out.println("A continuación se muestra la diagonal de la matriz A");
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               if (i == j) {
                   int diagonalA = matrizA[i][j];
                   System.out.println(diagonalA);
               }
           }
       }
       System.out.println("Ahora se muestra la diagonal de la matriz B");
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               if (i == j) {
                   int diagonalB = matrizB[i][j];
                   System.out.println(diagonalB);
               }
           }
       }
     
   }
}



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

MNicolas

Hay muchas soluciones, por ejemplo esta:

Mientras muestras las diagonales puedes ir guardando en un vector de n posiciones la diagonal de A y en otro vector de n posiciones la diagonal de B. Ejemplo tomando uno de tus bucles que muestran la diagonal

Código (java) [Seleccionar]

int[] primeraDiagonal = new int[n];
for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (i == j) {
                    int diagonalA = matrizB[i][j];
                    primeraDiagonal[i] = diagonalA;
                    System.out.println(diagonalA);
                }
            }
        }


Luego puedes unir los dos vectores de las diagonales

Código (java) [Seleccionar]

for(int i=0; i<n; i++){
      vecorL[i] = primeraDiagonal[i];
}
for(int i=n; i<n*2; i++){
      vecorL[i] = segundaDiagonal[i];
}


Pero hay muchas soluciones. Por ejemplo según muestras las diagonales puedes ir (en el primer bucle) metiendo en vectorL los valores y en el segundo vecorL[i+n]

Código (java) [Seleccionar]

System.out.println("A continuación se muestra la diagonal de la matriz A");
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (i == j) {
                    int diagonalA = matrizA[i][j];
                    vectorL[i] = diagonalA;
                    System.out.println(diagonalA);
                }
            }
        }
        System.out.println("Ahora se muestra la diagonal de la matriz B");
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (i == j) {
                    int diagonalB = matrizB[i][j];
                    vector[i+n] = diagonalB;
                    System.out.println(diagonalB);
                }
            }
        }


No sé si me equivoqué al escribir, pero espero que entiendas la idea. Saludos!