Adsence

domingo, 7 de agosto de 2011

Llenar-matris-diagonalmente

Leave a Comment
[caption id="attachment_996" align="aligncenter" width="410"]Llenar matris diagonalmente en Java Llenar matris diagonalmente en Java[/caption]

Se trata de una matriz de 5 columnas x 4 renglones, e introducir en esa matriz numeros del 1 al 20, pero diagonal, es decirl que quede asi:



[java]

public class MatrizDiagnonalizada {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

//Definimos el tamano de la matris
int col=4,fil=5;
//Estas variables las usare para estableces los limites dentro del while
int auxc=0,auxf=0;
//Es el numero que se ira colocando en la matris
int numero=1;
int m[][] =new int[fil][col];
System.out.println("Llenamos la matris");
//repetiremos hasta que llegue a la ultima posicion de la matris
while(numero< =20)
{
/*

Creo otras variables auxiliares para ir recorriendo la matris, asi no me generara problemas de index
como recorro la matris? es sencillo si te final, casi siempre se empieza por la fila 0 (excepto cuando estamos
en la columna 3, hay las columnas se mantiene estaticas y se empiesa a bajar en ls filas, es decir la
matris la recorro asi:(resto 1 a la columna y sumo 1 a la fila)
* 0,0
* 0,1-- > 1,0--- >2,-1 (se sale porque el indice -1 no existe
* 0,2-- > 1,1,-- >2,0-- >3,-1
* 0,3-- > 1,2 -- >2,1-- >3,0-- >4,-1
* como llege al limite de la columa, ahora aumento la fila
* 1,3-- >2,2-- >3,1-- >4,0-- >5,-1
* 2,3-- > etc,etc,etc

*/
int a1=auxc,a2=auxf;
while(a1 >=0)
{
m[a2][a1]=numero;
//System.out.println("m["+a2+"]["+a1+"]:"+numero);
numero++;
a1--;
a2++;
if(a2 >=5)
a1=-1;

}
if(auxc< 3){
auxc++;
auxf=0;
}else{
auxc=3;
auxf++;
}

}
System.out.println("Imprimimos la matris");
for(int i=0;i< fil;i++)
{
for(int j=0;j< col;j++)
{
System.out.print(m[i][j]+"|\t");

}
System.out.println("");
}

}
}

[/java]

0 comentarios :