unsigned char proximo(unsigned char *a, unsigned int i, unsigned int j, unsigned char regla, unsigned int n){ unsigned char prox; unsigned char actual = *(a + n * i + j); //Determino el estado de los vecinos unsigned char vecino_izq; unsigned char vecino_der; if(j == 0){ vecino_izq = *(a + n * i + n - 1); vecino_der = *(a + n * i + 1); } else if (j == (n - 1)){ vecino_izq = *(a + n * i + j - 1); vecino_der = *(a + n * i); } else{ vecino_izq = *(a + n * i + j - 1); vecino_der = *(a + n * i + j + 1); } unsigned int buffer[MAX_BINARIO]; decimal_binario(buffer,regla,MAX_BINARIO); //Caso 111 if ((vecino_izq == 1) && (actual == 1) && (vecino_der == 1)){ prox = buffer[0]; } //Caso 110 else if ((vecino_izq == 1) && (actual == 1) && (vecino_der == 0)){ prox = buffer[1]; } //Caso 101 else if ((vecino_izq == 1) && (actual == 0) && (vecino_der == 1)){ prox = buffer[2]; } //Caso 100 else if ((vecino_izq == 1) && (actual == 0) && (vecino_der == 0)){ prox = buffer[3]; } //Caso 011 else if ((vecino_izq == 0) && (actual == 1) && (vecino_der == 1)){ prox = buffer[4]; } //Caso 010 else if ((vecino_izq == 0) && (actual == 1) && (vecino_der == 0)){ prox = buffer[5]; } //Caso 001 else if ((vecino_izq == 0) && (actual == 0) && (vecino_der == 1)){ prox = buffer[6]; } //Caso 000 else if ((vecino_izq == 0) && (actual == 0) && (vecino_der == 0)){ prox = buffer[7]; } return prox; }
void recebe(int *vetor){ int i, j, *par, retorno; par = malloc(sizeof(int)); for(i=0,j=0;i<10;i++){ if(vetor[i] % 2 == 0){ retorno = decimal_binario(&vetor[i]); par[j] = retorno; j++; } } printf("\nVETOR DOS BINARIOS:\n"); for(i=0;i<j;i++){ printf("Valor: %d ", par[i]); } printf("\n\n"); }