#include <stdio.h>

#define SIZE 16
#define BLOCKSIZE 4

void compute(int *in_arr, int *out_arr);

main(int argc,char **argv)
{
  int *in_array, *out_array;
  int i, sum;

  /* initialization */
  in_array = (int *) malloc(SIZE*sizeof(int)); 
  for (i=0; i<SIZE; i++) {
    in_array[i] = random()%10; 
    printf("in_array[%d] = %d\n",i,in_array[i]);    
  }
  out_array = (int *) malloc(BLOCKSIZE*sizeof(int)); 

  /* compute number of appearances of 6 */
  compute(in_array, out_array);

  sum = 0;
  for (i=0; i<BLOCKSIZE; i++) {
    sum+=out_array[i];
  }

  printf ("The number 6 appears %d times in array of  %d numbers\n",sum,SIZE);
}

void compute(int *in_arr, int *out_arr) {
  int i, j;

  for (j=0; j<BLOCKSIZE; j++) {
    out_arr[j] = 0;
    for (i=0; i<SIZE/BLOCKSIZE; i++) {
      if (in_arr[i*BLOCKSIZE+j] == 6) out_arr[j]++;
    }
  }
}
