El siguiente programa crea una matriz de 10 x 10 y es llenada con números aleatorios del 0 al 9; la cual permite buscar un numero de tres cifras, de forma horizontal, vertical y sus inversas, pero no en diagonal. Al encontrar dicho numero proporciona la posición de cada dígito.
Este programa es un gran ejemplo para practicar los ciclos anidados, condiciones múltiples, métodos, y los diferentes recorridos en matrices o arreglos bidimensionales.
Este programa es un gran ejemplo para practicar los ciclos anidados, condiciones múltiples, métodos, y los diferentes recorridos en matrices o arreglos bidimensionales.
-----------------------------------------------------
package sopadenumeros;
import javax.swing.JOptionPane;
public class SopadeNumeros {
public static int generar(int min, int max){
return (int)(Math.random()*(max-min+1)+min);
}
public static void llenar(int a[][]){
for (int[] a1 : a) {
for (int j = 0; j < a1.length; j++) {
a1[j] = generar(0,9);
}
}
}
public static void initializeArray(int digits[]){
for(int i=0;i<3;i++){
digits[i]=0;
}
}
public static void mostrarMatriz(int m[][]){
for (int[] m1 : m) {
for (int j = 0; j < m1.length; j++) {
System.out.print(m1[j] + "\t");
}
System.out.println("");
}
}
public static int convert (String input){
int num;
num=Integer.parseInt(input);
return num;
}
public static void digits(int digits[], String numero){
digits[0]=(convert(numero.substring(0,1)));
digits[1]=(convert(numero.substring(1,2)));
digits[2]=(convert(numero.substring(2,3)));
}
public static void posXFilas(int m [][], int digitos[]){
for(int i=0; i<m.length;i++){
for(int j=0; j<m[i].length-2;j++){
if(m[i][j] == digitos[0]){
if(m[i][j+1] == digitos[1]){
if(m[i][j+2] == digitos[2]){
System.out.println("Encontrado!!!");
System.out.println("Las posiciones son:\nPara "+digitos[0]+": Fila "+(i+1)+" Columna "+(j+1)+" "+
"\nPara "+digitos[1]+": Fila "+(i+1)+" Columna "+(j+2)+" "+"\nPara "+digitos[2]+": Fila "+(i+1)
+" Columna "+(j+3));
}
}
}
}
}
}
public static void posXFilasInv(int m [][], int digitos[]){
for(int i=0; i<m.length;i++){
for(int j=0; j<m[i].length-2;j++){
if(m[i][j] == digitos[2]){
if(m[i][j+1] == digitos[1]){
if(m[i][j+2] == digitos[0]){
System.out.println("Encontrado!!!");
System.out.println("Las posiciones son:\nPara "+digitos[0]+": Fila "+(i+1)+" Columna "+(j+3)+" "+
"\nPara "+digitos[1]+": Fila "+(i+1)+" Columna "+(j+2)+" "+"\nPara "+digitos[2]+": Fila "+(i+1)
+" Columna "+(j+1));
}
}
}
}
}
}
public static void posXColum(int m[][], int digitos[]){
for(int j=9;j>=0;j--){
for(int i=9;i>=2;i--){
if(m[i][j] == digitos[2]){
if(m[i-1][j] == digitos[1]){
if(m[i-2][j] == digitos[0]){
System.out.println("Encontrado!!!");
System.out.println("Las posiciones son:\nPara "+digitos[0]+": Fila "+(i-1)+" Columna "+(j+1)+" "+
"\nPara "+digitos[1]+": Fila "+(i)+" Columna "+(j+1)+" "+"\nPara "+digitos[2]+": Fila "+(i+1)
+" Columna "+(j+1));
}
}
}
}
}
}
public static void posXColumInv(int m[][], int digitos[]){
for(int j=9;j>=0;j--){
for(int i=9;i>=2;i--){
if(m[i][j] == digitos[0]){
if(m[i-1][j] == digitos[1]){
if(m[i-2][j] == digitos[2]){
System.out.println("Encontrado!!!");
System.out.println("Las posiciones son:\nPara "+digitos[0]+": Fila "+(i+1)+" Columna "+(j+1)+" "+
"\nPara "+digitos[1]+": Fila "+(i)+" Columna "+(j+1)+" "+"\nPara "+digitos[2]+": Fila "+(i-1)
+" Columna "+(j+1));
}
}
}
}
}
}
public static void main(String[] args) {
String numero;
int digitos[] = new int [3];
int matriz [][] =new int[10][10];
llenar(matriz);
initializeArray(digitos);
System.out.println("SOPA DE NUMEROS\n ");
mostrarMatriz(matriz);
numero=JOptionPane.showInputDialog("Ingrese el numero de tres cifras a buscar:");
if(numero.length() == 3){
digits(digitos, numero);
posXFilas(matriz, digitos);
System.out.println("");
posXFilasInv(matriz, digitos);
System.out.println("");
posXColumInv(matriz,digitos);
System.out.println("");
posXColum(matriz,digitos);
}
else{
System.out.println("Error, debe ser un numero de tres cifras");
}
}
}
-----------------------------------------------------
Comentarios
Publicar un comentario