EVALUACION DE MATRIZ EN JAVA. MODELO TUMORAL

Iniciado por DarioGarcia, 9 Agosto 2014, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

DarioGarcia

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

Zoik

#1
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 (java) [Seleccionar]

int tope = 60;
int countTumor = 0;
int array[][] = new int[tope][tope];

for(int i = 0; i < tope; i++)
{
for(int a = 0; a < tope; a++)
{
if(array[i][a] == 1) //Revisamos si es cancerigena
{
countTumor++;
} else
{
countTumor = 0; //Si hay un espacio entre celulas con una celula NO cancerigena reiniciamos el contador
}
if(countTumor == tope) // Si el contador de celulas cancerigenas continuas llega al tope, en este caso 60, declaramos la fila cancerigena
{
array[i][a] = 3;
countTumor = 0;
}
}
}
}


Un saludo

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