import javax.swing.
*;
public class Main {
public static void main(String[] args) {
int [][] ar1, ar2;
Matrices ob = new Matrices();
int x, y;
x = Integer.parseInt(JOptionPane.showInputDialog("Numero de renglones"));
y = Integer.parseInt(JOptionPane.showInputDialog("Numero de columnas"));
int mul = x * y;
ar1 = ob.cargarMat(x, y);
ar2 = ob.cargarMat(x, y);
System.out.println("MATRIZ 1\n" + ob.mostrarMat(ar1, x));
JOptionPane.showMessageDialog(null, "MATRIZ 1\n" + ob.mostrarMat(ar1, x));
int [] n = ob.ordenar(ar1, x, y, mul);
int [] vec = ob.orda(n, mul);
int [][] ma = ob.mattt(vec, x, y);
System.out.println("MATRIZ ORDENADA\n" + ob.mostrarMat(ma, x));
JOptionPane.showMessageDialog(null, "MATRIZ ORDENADA\n" + ob.mostrarMat(ma, x));
System.out.println("\n MATRIZ 2 \n" + ob.mostrarMat(ar2, x));
JOptionPane.showMessageDialog(null, "\n MATRIZ 2 \n" + ob.mostrarMat(ar2, x));
int [][] sum = new int [ar1.length][ar2[0].length];
ob.sumaMat(ar1, ar2, sum, x);
ob.restaMat(ar1, ar2, sum, x);
ob.matTran(ar1, x, y);
ob.matTran(ar2, x, y);
ob.sumasD(ar1);
ob.sumasD(ar2);
ob.sumaRen(ar1);
ob.sumaRen(ar2);
}
-----------------------------------------------------------------------------------------------------------------------------------
import javax.swing.*;
import java.util.Scanner;
public class Matrices {
Scanner au = new Scanner(System.in);
public int [][] cargarMat (int x, int c){
int [][] mat = new int[x][c];
for (int j = 0; j < x; j ++){
for (int k = 0; k < c; k ++){
mat [j][k] = (int)(Math.random()*100);
return mat;
String mostrarMat (int [][] mat, int x){
String s = "TABLA \n";
for (int i = 0; i < x; i ++){
for (int k = 0; k < mat[i].length; k ++){
s = s + mat [i][k] + "\t";
s = s + "\n";
return s;
}
void sumaMat(int [][] ma1, int [][] ma2, int [][] res, int x){
if ( ma1.length != ma2[0].length && ma1[0].length != ma2[0].length){
JOptionPane.showMessageDialog(null, "Error, no se puede sumar");
} else {
for (int i = 0; i < ma1.length; i ++){
for (int k = 0; k < ma1[i].length; k ++){
res [i][k] = ma1 [i][k] + ma2[i][k];
System.out.println("La suma es: " + mostrarMat(res, x));
JOptionPane.showMessageDialog(null, "La suma es: " + mostrarMat(res, x));
void restaMat(int [][] ma1, int [][] ma2, int [][] res, int x){
if ( ma1.length != ma2[0].length && ma1[0].length != ma2[0].length){
JOptionPane.showMessageDialog(null, "Error, no se puede restar");
} else {
for (int i = 0; i < ma1.length; i ++){
for (int k = 0; k < ma1[i].length; k ++){
res [i][k] = ma1 [i][k] - ma2[i][k];
System.out.println("La resta es: " + mostrarMat(res, x));
JOptionPane.showMessageDialog(null, "La resta es: " + mostrarMat(res, x));
void matTran(int [][] matTran, int x, int c) {
for (int i = 0; i < x; i ++){
for (int k = 0; k < c; k ++){
matTran [k][i] = matTran [i][k];
String s = "MATRIZ transpuesta \n";
for (int j = 0; j < matTran.length; j ++){
for (int l = 0; l < matTran[j].length; l ++){
s = s + matTran[j][l] + "\t";
s = s + "\n";
System.out.println(s);
JOptionPane.showMessageDialog(null, s);
void sumasD (int [][] matS){
int sdp = 0, sdi = 0;
for(int i = 0; i < matS.length; i ++){
sdp = sdp + matS[i][i];
sdi = sdi + matS[i][matS.length - 1 - i];
System.out.println( "La suma de la diagonal principal es: "+ sdp + "\n" + "La suma de la
diagonal izquierda es: " + sdi);
JOptionPane.showMessageDialog(null, "La suma de la diagonal principal es: " + sdp + "\n" +
"La suma de la diagonal izquierda es: " + sdi);
void sumaRen(int [][]matS){
String s = "MATRIZ con suma \n";
for (int i = 0; i < matS.length; i ++){
int suma = 0;
for (int k = 0; k < matS[i].length; k ++){
suma = suma + matS[i][k];
s = s + matS[i][k] + "\t" + " ";
s = s + suma + "\n";
System.out.println(s);
JOptionPane.showMessageDialog(null, s);
int [] ordenar (int [][]matS, int x, int c, int mul){
int cont = 0;
int [] vec = new int[mul];
for (int l = 0; l < matS.length; l ++){
for (int j = 0; j < matS[l].length; j ++){
vec [cont] = matS[l][j];
cont++;
return vec;
int [] orda(int []vec, int mul){
for (int i = 0; (mul - 1) > i; i ++){
for(int j = 0; j < (mul - 1); j ++){
if(vec[j] > vec[j + 1]){
int aux = vec [j];
vec [j] = vec[j + 1];
vec [j + 1] = aux;
return vec;
int [][] mattt (int [] vec, int x, int c){
int [][] mat = new int[x][c];
int cont = 0;
for (int z = 0; z < x; z ++){
for (int y = 0; y < c; y ++){
mat [z][y] = vec[cont];
cont++;
return mat;