Foro de elhacker.net

Programación => Java => Mensaje iniciado por: DarioGarcia en 9 Agosto 2014, 20:31 pm



Título: EVALUACION DE MATRIZ EN JAVA. MODELO TUMORAL
Publicado por: DarioGarcia en 9 Agosto 2014, 20:31 pm
Buenas,

Estoy modelando un tumor utilizando java y ecuaciones matemáticas. Para ello utilizo el software EJS( easy java simulations), concebido para personas más interesadas en el contenido del modelo que en los aspectos técnicos necesarios para la construcción del mismo. Aún así, me he encontrado con un problema:

El modelo se construye a partir de una matriz donde cada elemento i,j (denominado cells [ i ][j]) puede ser 0 ( célula sana) o 1( célula cancerígena). Una de las reglas que pretendo escribir en código es que cuando un elemento i,j tenga los siguientes 60 elementos de su izquierda con el valor de 1, ese elemento i,j cambie de valor a 3 (cellsN [ i ][j]=3)

Lo que he pensado ha sido lo siguiente:

for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
if (cells [ i ][j]==1) {
for (int it=0; it<=60 ; it++) {
if (cells[i+it][j]==1)
cellsN [ i ][j]=3;
}
}
}
}
El codigo esta mal, pero es una idea de como lo estoy escribiendo.
Lo que quiero es un código que me evalúe el valor de los 60 elementos a la izquierda del elemento en cuestión y si el valor de esos 60 elementos es 1, entonces el elemento en cuestión pasa a valer 3.

Gracias de antemano

PD: Si el elemento es cells[ i ][j], entonces el primer vecino a su izquierda es cells[i-1][j], el segundo vecino a su izquierda es cells[i-2][j], así sucesivamente


Título: Re: EVALUACION DE MATRIZ EN JAVA. MODELO TUMORAL
Publicado por: Zoik en 9 Agosto 2014, 23:59 pm
Hola,

a ver si lo he entendido, por esa regla, cada fila de la array corresponde a digamos un grupo de células independientes, y cuando llega a 60 células en 1 continuas, es decir sin 0 entre medias, se considera que todo ese grupo es cancerígeno y se le marca con el último espacio de la fila un 3.

Código
  1. int tope = 60;
  2. int countTumor = 0;
  3. int array[][] = new int[tope][tope];
  4.  
  5. for(int i = 0; i < tope; i++)
  6. {
  7. for(int a = 0; a < tope; a++)
  8. {
  9. if(array[i][a] == 1) //Revisamos si es cancerigena
  10. {
  11. countTumor++;
  12. } else
  13. {
  14. countTumor = 0; //Si hay un espacio entre celulas con una celula NO cancerigena reiniciamos el contador
  15. }
  16. if(countTumor == tope) // Si el contador de celulas cancerigenas continuas llega al tope, en este caso 60, declaramos la fila cancerigena
  17. {
  18. array[i][a] = 3;
  19. countTumor = 0;
  20. }
  21. }
  22. }
  23. }
  24.  

Un saludo

PD: Faltaría inicializar la array por eso, confío en que sepas hacerlo