Está en la página 1de 19

Informe sobre tarea de matrices

Nombre:
Curso:
Fecha:
Matriz 1
Matriz por conseguir:

Desarrollo:

En primero importamos la librería java.util.Scanner; para de esta manera poder posterior


mente crear un objeto de tipo Scanner llamado “S” y asi nos permita leer la entrada de datos
de un usuario de la siguiente manera:

Primero declararemos las variables a utilizar para poder ingresar una matriz y posteriormente
limitar el ingreso a números impares y mayores que 3 de la siguiente manera:
Entra a un “do” el cual lee la dimensión ingresada por usuario, si cumple la condición declara la
matriz con dimensiones iguales a la ingresada por usuario tanto para filas como para columnas
y cambia en valor de conf a true de esta manera permitiéndonos salir del do while.

De la condición no cumplirse saldrá el enunciado de ("El número ingresado no cumple con los
requisitos.") y volverá a pedir el valor hasta que se ingrese correctamente.

Empezaremos declarando dos ciclos for anidados para así poder más adelante pasar a llenar la
matriz con el patrón dado.

Por defecto los elementos de la matriz son 0 por lo cual si declaramos otros dos ciclos for
anidados para imprimir la matriz nos dará lo siguiente.
Condicional 1

Declaramos un contador el cual nos ayudara a poder ir identificando el recorrido por la Matriz
y poder llegar al patrón deseado, junto con un condicional el cual agregamos y probamos que
nos llena de una secuencia numérica la diagonal principal.

El resultado de agregar este condicional es:

Condicional 2

Declaro otro contador el cual Junto a un condicional me permita recorrer la matriz de la


manera desea que en este caso es en la parte superior a la diagonal anterior en diagonal a esta
mismo y al final del segundo siglo incrementamos el valor en uno para poder avanzar de
posición.

Pero no se genera como se desea:


Por lo que agregar un n2++; para continuar la secuencia numérica en el mismo siclo for desde
la posición (0;1) de manera ahora si correcta.

El resultado de agregar este condicional es:

Condicional 3

Siguiendo la misma lógica de agregar contadores de este caso, empezando desde la posición
(0;2) y luego incrementar el valor en uno para recorrer junto a la condicional por las posiciones
deseadas, continuando así la serie de números establecida gracias a una nueva variable que
continuara desde el número que se había quedado en la diagonal anterior.

El resultado de agregar este condicional es:


Condicional 4

Seguimos la misma lógica y metodología que las anteriores condicionales, a diferencia que la
posición donde empezamos ahora es la (0;3) y en la secuencia numérica desde 13 a 14.

Condicional 5

Culminamos el patrón deseado con una última condicional, contadores, los cuales nos generara
el número 15 en la posición faltante (0;4) y así logrando el patrón de números plateado y
deseado.

La siguiente sección del código nos permite imprimir la matriz de para poder visualizar el orden
que se encuentra actualmente.
Codigo:

/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

package recu2;

import java.util.Scanner;

/**

* @author andys

*/

public class Recu2 {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

Scanner S = new Scanner(System.in);

int[][] ma = null;

int n;

boolean conf = false;

do {

System.out.println("Ingrese el tamaño de la matriz impar y mayor que 3");


n = S.nextInt();

if (n % 2 != 0 && n > 3) {

ma = new int[n][n];

conf = true;

} else {

System.out.println("El número ingresado no cumple con los requisitos.");

} while (!conf);

int c = 1;

int c2 = 1;

int c3 = 2;

int c4 = 3;

int c5 = 4;

int n2 = n;

int n3 = n2+(n-1);

int n4 = n3+(n-2);

int n5 = n4+(n-3);

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

if (j == i) {

ma[i][j] = c;

c++;

if (j == c2) {

ma[i][j] = n2+1;

n2++;

if(j==c3){

ma[i][j] = n3+1;

n3++;

}
if(j==c4){

ma[i][j] = n4+1;

n4++;

if(j==c5){

ma[i][j] = n5+1;

n5++;

c2++;

c3++;

c4++;

c5++;

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

System.out.print(ma[i][j] + "\t");

System.out.println();

Ejecusion:
Matriz 2
Matriz por conseguir:

Desarrollo:

Igual que la anterior matriz importamos la librería java.util.Scanner; para de esta manera
poder posteriormente crear un objeto de tipo Scanner llamado “S” y así nos permita leer la
entrada de datos de un usuario de la siguiente manera:

Declararemos las variables a utilizar para poder ingresar una matriz y posteriormente limitar el
ingreso a números impares y mayores que 3 de la siguiente manera:
Entra a un “do” el cual lee la dimensión ingresada por usuario, si cumple la condición declara la
matriz con dimensiones iguales a la ingresada por usuario tanto para filas como para columnas
y cambia en valor de conf a true de esta manera permitiéndonos salir del do while.

De la condición no cumplirse saldrá el enunciado de ("El número ingresado no cumple con los
requisitos.") y volverá a pedir el valor hasta que se ingrese correctamente.

Agrego dos for anidados para poder llenar en un momento con condicionales y así lograr llegar
al patrón mostrado anteriormente y al cual queremos llegar por defecto las matrices muestran
que están llenas de ceros, así que al imprimir esta matriz nos dará lo siguiente.
Condicional 1

Con la línea de código agregada se imprimirán normalmente los números por filas, pero con
esa misma línea de código, un contador el cual irá agregando números, por cada posición
avanzada se sumara el valor de uno a ese contador y mostrara el orden de impresión logrando
así la primera fila del patrón deseado.

El resultado de agregar este condicional es:

Condicional 2

Con la siguiente condicional limitaremos lo que es la generación de números a la columna del


lateral derecho siguiendo el orden deseado del contador de números, en este caso agregue la
condicional if (j == n - 1) la cual solo ingresara a este si la columna en la cual esta es n-1
respectivamente a la matriz. El contador extra agregado es para que continúe el conteo desde
donde se quedó en la posición anterior.

El resultado de agregar este condicional es:


Decidí el quitar la primera línea de código para poder visualizar de una mejor manera la forma
en que se están generando los numero y no confundirme, pero esta misma línea de código se
agregara al final para poder completar la primera fila del patrón número expuesto.

El resultado de quitar esa línea de código es:

Condicional 3:

Agregando otro condicional, el cual solo ingrese y empiece a colocar los números, si if (i == n -
1) la posición en la que se encuentra es en la fila n-1 de ser así empezará agregar los números
desde la posición (4;0) realizando una cuenta atrás quedando la serie números igual que el
patrón deseado.

Partiendo así desde el 13 al 10 resultando en la siguiente ejecución:


Condicional 4:

En esta condicional vamos a establecer que entrara a la condición si se encuentra en j==0, pero
siempre y cuando en la posición i sea mayor a 0 y menor a n-2 para que no se arruine el conteo
que se va llevando de las posiciones de esta manera if (j == 0 && i > 0 && i <= n - 2).

Con un nuevo contador que continúe desde el valor de la anterior posición, pero igual que la
anterior ocasión, el conteo se realizara hacia atrás, puesto que el recorrido de la matriz lo
requiere.

Ejecución:

Condicional 5:

Se sigue la misma lógica mencionada en los anteriores puntos estableciendo un punto de


control y bloqueos de la siguiente manera if (i == 1 && j > 0 && j <= n - 2) para que no sobre
pase el conteo, a diferencia que en esta ocasión el conteo se realizara normalmente sumando
los valores en uno.
Condicional 6:

De igual manera se realizará una condicional desde un punto de partida y dos bloqueos para
que no sobre pase el conteo, este mismo continuará normalmente con una variable nueva que
continúe el conteo desde donde se quedó aumentado el valor en uno a diferencia de las otras
posiciones esta vez solo recorrerá 2.

Condicional 7:

Se realizará igualmente lo anterior, mencionado a acepción de que volveremos a realizar el


conteo en reversa reduciendo el valor en uno, pero quedando correctamente según el patrón
lo requiera, recorrerá nuevamente solo dos posiciones y con una nueva variable retomará el
conteo desde donde se quedó.

Resultado de la ejecución:
Condicional 8:

Para esta condicional igualmente se declara un inicio y un límite de hasta donde llegara para
que no sobre pase el conteo y culmine el patrón de manera correcta if (i == n - 3 && j <= n - 3
&& j >= 1) acompañado de sí contador respectivo el cual continuara desde donde se quedó
anteriormente y el conteo se realizara normalmente aumentando su valor en uno.

Ejecución:

Condicional (culminación):

Para culminar con el patrón completo deseado se implementara la primera línea borrada
anteriormente mencionada para evitar el confundir el patrón impreso y de esa manera poder
imprimir el patrón completo y tal y como se presenta en la imagen del inicio.
Ejecución:

Impresión de la matriz:

Codigo:

/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

package recu;

import java.util.Scanner;

/**

* @author andys

*/

public class Recu {

/**

* @param args the command line arguments


*/

public static void main(String[] args) {

Scanner S = new Scanner(System.in);

int[][] ma = null;

int n;

boolean conf = false;

do {

System.out.println("Ingrese el tamaño de la matriz impar y mayor que 3");

n = S.nextInt();

if (n % 2 != 0 && n > 3) {

ma = new int[n][n];

conf = true;

} else {

System.out.println("El número ingresado no cumple con los requisitos.");

} while (!conf);

int c = 1;

int n2 = n;

int n3 = n + n + n - 2;

int n4 = n3 + (n - 2);

int n5 = n4 + 1;

int n6 = n5 + (n - 2);

int n7 = n6 + (n - 3) + (n - 4);

int n8 = n7 + 1;

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

ma[i][j] = c++;

if (j == n - 1) {

ma[i][j] = n2++;

}
if (i == n - 1) {

ma[i][j] = n3--;

if (j == 0 && i > 0 && i <= n - 2) {

ma[i][j] = n4--;

if (i == 1 && j > 0 && j <= n - 2) {

ma[i][j] = n5++;

if (j == n - 2 && i > 1 && i <= n - 2) {

ma[i][j] = n6++;

if (i == n - 2 && j <= n - 3 && j >= 1) {

ma[i][j] = n7--;

if (i == n - 3 && j <= n - 3 && j >= 1) {

ma[i][j] = n8++;

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

System.out.print(ma[i][j] + "\t");

System.out.println();

}
Ejecución:

También podría gustarte