数组的赋值有关问题。调试006.exe 中的 0x778cf8c5 处未处理的错误: 0xC0000005: 写入位置 0x00030ffc 时发生访问冲突

数组的赋值问题。调试006.exe 中的 0x778cf8c5 处未处理的异常: 0xC0000005: 写入位置 0x00030ffc 时发生访问冲突
int i=0,j,m;      //i表示个体数即第i组参数,j表示第j个基因即第i组参数中j个
int k=0,a[16]={0};
double sum1,sum2,sum;
float parameter[5],f;

……
typedef struct
{
   int gene[5][16];
}
individual;

……

for(i=0;i<4;i++)        //第i组参数
  {
   cout<<"Please enter NO."<<i+1<<" set of parameter:"<<endl;
   cin>>parameter[0];   //输入参数
             cin>>parameter[1];
   cin>>parameter[2]; 
   cin>>parameter[3]; 
           cin>>parameter[4]; 
   for(j=0;j<5;j++)      //第j个参数
      {     /*以下为格雷编码*/
         m=(int)(parameter[j]);
         f=parameter[j]-m;
         for(k=7;k>=0;k--)  //第k位参数基因
         {
  a[k]=(int)(f*2);
  f=f*2-a[k];//下一次被除数为上次除2的商
         }
       k=8;
       while(m)
       {
         a[k]=m%2;
     k++;
      m=m/2;//下一次被除数为上次除2的商
         }
              cout<<"Gray code: ";
        
       for(k=0;k<7;k++)
        {
        a[k]=a[k+1]^a[k];
        }
       for(k=8;k<15;k++)
        {
      a[k]=a[k+1]^a[k];
        }
       for(k=15;k>=0;k--)
        {
         if(k==7)cout<<".";   
                 parent[i].gene[j][k]=a[k];
 cout<<parent[i].gene[j][k];   //总感觉这样直接赋值不妥,但找不到原因。
       }
                 cout<<endl;      
    }
                ……

以上是程序节选,运行没有错误,但是运行到第四组第四个参数时,始终不能编码。
出现以下错误提示:
调试006.exe 中的 0x778cf8c5 处未处理的异常: 0xC0000005: 写入位置 0x00030ffc 时发生访问冲突
请高手解答。
C++   格雷编码   数组

------解决方案--------------------
断点调点下,应该是野指针错误,或者写入地址有问题~
------解决方案--------------------
引用: