Mes ejercicios de matrices resueltos
2.- Crear una matriz de 5 filas y n columnas (se pide al usuario). Rellenarlo con números aleatorios entre 0 y 10.
import
java.util.Scanner;
public
class
Ejercicio_2
{
public
static
void
main(String[]
args) {
Scanner
sn=
new
Scanner(System.in);
System.out.println(
"Escriba
un numero de columnas"
);
int
columnas=sn.nextInt();
int
matriz[][]=
new
int
[
5
][columnas];
for
(
int
i=
0
;i<matriz.length;i++){
for
(
int
j=
0
;j<matriz[
0
].length;j++){
matriz[i][j]=generaNumAleatorio(
0
,
9
);
System.out.print(matriz[i][j]+
"
"
);
}
System.out.println(
""
);
}
}
public
static
int
generaNumAleatorio(
int
minimo,
int
maximo){
return
(
int
)Math.floor(Math.random()*(minimo-(maximo+
1
))+(maximo+
1
));
}
3) Crear dos matrices de nxn y sumar sus valores, los resultados se deben almacenar en otra matriz. Los valores y la longitud, seran insertados por el usuario. Mostrar las matrices originales y el resultado.
import
java.util.Scanner;
public
class
Ejercicio_3
{
public
static
void
main(String[]
args) {
Scanner
sn=
new
Scanner(System.in);
System.out.println(
"Escribe
un tamaño"
);
int
tamanio=sn.nextInt();
int
matriz1[][]=
new
int
[tamanio][tamanio];
int
matriz2[][]=
new
int
[tamanio][tamanio];
int
resultado[][]=
new
int
[tamanio][tamanio];
for
(
int
i=
0
;i<matriz1.length;i++){
for
(
int
j=
0
;j<matriz1[
0
].length;j++){
System.out.println(
"Escriba
el valor para la fila "
+i+
"
y columna "
+j+
"
de la matriz 1"
);
matriz1[i][j]=sn.nextInt();
System.out.println(
"Escriba
el valor para la fila "
+i+
"
y columna "
+j+
"
de la matriz 2"
);
matriz2[i][j]=sn.nextInt();
resultado[i][j]=matriz1[i][j]+matriz2[i][j];
}
}
System.out.println(
"Matriz
1"
);
muestraMatriz(matriz1);
System.out.println(
"Matriz
2"
);
muestraMatriz(matriz2);
System.out.println(
"Matriz
resultante"
);
muestraMatriz(resultado);
}
public
static
void
muestraMatriz(
int
[][]
matriz){
for
(
int
i=
0
;i<matriz.length;i++){
for
(
int
j=
0
;j<matriz[
0
].length;j++){
System.out.print(matriz[i][j]+
"
"
);
}
System.out.println(
""
);
}
}
}
4) Nos piden crear una matriz de 4×4 de números enteros que inicialmente esta vacía, nos piden hacer un menú con estas opciones:
Rellenar TODA la matriz de números, debes pedírselo al usuario.
Suma de una fila que se pedirá al usuario (controlar que elija una correcta)
Suma de una columna que se pedirá al usuario (controlar que elija una correcta)
Sumar la diagonal principal (ver ejemplo)
Sumar la diagonal inversa (ver ejemplo)
La media de todos los valores de la matriz
IMPORTANTE: hasta que no se haga la primera opción, el resto de opciones no se deberán de ejecutar, simplemente mostrar un mensaje donde diga que debes rellenar la matriz.
public
class
Ejercicio_matrices_DDR_04
{
public
static
void
main(String[]
args) {
Scanner
sn =
new
Scanner(System.in);
//Matriz
cuadrada de 4x4
int
matriz[][]
=
new
int
[
4
][
4
];
//Variables
utilizadas
boolean
salir
=
false
;
int
opcion,
fila, columna;
//Utilizado
para indicar si hemos entrado en la 1ª opcion
boolean
rellenado
=
false
;
//Menu
do
{
//Mensajes
del menu
System.out.println(
"Menu"
);
System.out.println(
"1.
Rellenar Matriz"
);
System.out.println(
"2.
Sumar fila"
);
System.out.println(
"3.
Sumar columna"
);
System.out.println(
"4.
Suma diagonal principal"
);
System.out.println(
"5.
Suma diagonal inversa"
);
System.out.println(
"6.
Media elementos"
);
System.out.println(
"7.
Salir"
);
System.out.println(
"Elije
una opcion"
);
opcion
= sn.nextInt();
switch
(opcion)
{
case
1
:
rellenarMatriz(sn,
matriz);
//Ahora
si podemos acceder al resto de opciones
rellenado
=
true
;
break
;
case
2
:
if
(rellenado)
{
//Validamos
la fila
do
{
System.out.println(
"Elige
una fila"
);
fila
= sn.nextInt();
}
while
(!(fila
>=
0
&&
fila < matriz.length));
System.out.println(
"La
suma de los valores de la fila "
+
fila
+
"
es: "
+
sumaFila(matriz, fila));
}
else
{
System.out.println(
"Debes
rellenar la matriz primero"
);
}
break
;
case
3
:
if
(rellenado)
{
//Validamos
la colunma
do
{
System.out.println(
"Elige
una fila"
);
columna
= sn.nextInt();
}
while
(!(columna
>=
0
&&
columna < matriz.length));
System.out.println(
"La
suma de los valores de la columna "
+
columna
+
"
es: "
+
sumaColumna(matriz, columna));
}
else
{
System.out.println(
"Debes
rellenar la matriz primero"
);
}
break
;
case
4
:
if
(rellenado)
{
System.out.println(
"La
suma de la diagonal principal es: "
+
sumaDiagonalPrinc(matriz));
}
else
{
System.out.println(
"Debes
rellenar la matriz primero"
);
}
break
;
case
5
:
if
(rellenado)
{
System.out.println(
"La
suma de la diagonal inversa es: "
+
sumaDiagonalInversa(matriz));
}
else
{
System.out.println(
"Debes
rellenar la matriz primero"
);
}
break
;
case
6
:
if
(rellenado)
{
System.out.println(
"La
media de los valores de la "
+
"matriz
es de "
+
media(matriz));
}
else
{
System.out.println(
"Debes
rellenar la matriz primero"
);
}
break
;
case
7
:
salir
=
true
;
break
;
default
:
System.out.println(
"Tienes
que meter un valor entre 1 y 7"
);
}
}
while
(!salir);
System.out.println(
"FIN"
);
}
/**
*
Rellena la matriz con valores insertados por el usuario
*
*
@param sn
*
@param matriz
*/
public
static
void
rellenarMatriz(Scanner
sn,
int
[][]
matriz) {
for
(
int
i
=
0
;
i < matriz.length; i++) {
for
(
int
j
=
0
;
j < matriz[
0
].length;
j++) {
System.out.println(
"Escribe
un numero en la posicion "
+
i +
"
"
+
j);
matriz[i][j]
= sn.nextInt();
}
}
}
/**
*
Suma los valores de una determinada fila
*
*
@param matriz
*
@param fila
*
@return
*/
public
static
int
sumaFila(
int
[][]
matriz,
int
fila)
{
int
suma
=
0
;
for
(
int
j
=
0
;
j < matriz.length; j++) {
suma
+= matriz[fila][j];
}
return
suma;
}
/**
*
Suma los valores de una determinada columna
*
*
@param matriz
*
@param columna
*
@return
*/
public
static
int
sumaColumna(
int
[][]
matriz,
int
columna)
{
int
suma
=
0
;
for
(
int
i
=
0
;
i < matriz.length; i++) {
suma
+= matriz[i][columna];
}
return
suma;
}
/**
*
Suma los valores de la diagonal principal de la matriz
*
*
@param matriz
*
@return
*/
public
static
int
sumaDiagonalPrinc(
int
[][]
matriz) {
int
suma
=
0
;
for
(
int
i
=
0
,
j =
0
;
i < matriz.length; i++, j++) {
suma
+= matriz[i][j];
}
return
suma;
}
/**
*
Suma los valores de la diagonal inversa de la matriz
*
*
@param matriz
*
@return
*/
public
static
int
sumaDiagonalInversa(
int
[][]
matriz) {
int
suma
=
0
;
for
(
int
i
=
0
,
j =
3
;
i < matriz.length; i++, j--) {
suma
+= matriz[i][j];
}
return
suma;
}
/**
*
Media de todos los elementos de la matriz
*
*
@param matriz
*
@return
*/
public
static
double
media(
int
[][]
matriz) {
double
suma
=
0
,
media;
for
(
int
i
=
0
;
i < matriz.length; i++) {
for
(
int
j
=
0
;
j < matriz[
0
].length;
j++) {
suma
+= matriz[i][j];
}
}
media
= suma / (matriz.length * matriz.length);
return
media;
}
}
Hola profe, gracias por los ejercicios.
ResponderEliminar