buongiorno,

un piccolo consiglio, questo passaggio di array a funzioni e pulito, o a lungo andare può creare errori?

codice:

int trasf[16];
int a[16]; 

void lettura()
{
Blocks0(trasf, 5);
Blocks1(trasf, 6);
Blocks2(trasf, 5);
}

void Blocks0(int transf[], int lung)
{
.
.
.
if (i % 200 == 0)
    {
      for (int i = 0; i < 5; i++)
      {
        transf[i] = 0;
      }



.
.
.
if (coordinatex0[j] > 270 && coordinatex0[j] <= 310 )
        {
          inserimento0[0] = coordinatex0[j];
          transf[0] = 1;
        }
        //////////////////////////////////////////////////////////
        if (coordinatex0[j] > 220 && coordinatex0[j] <= 270 )
        {
          inserimento0[1] = coordinatex0[j];
         transf[1] = 1;
        }
        //////////////////////////////////////////////////////////
        if (coordinatex0[j] > 120 && coordinatex0[j] <= 210 )
        {
          inserimento0[2] = coordinatex0[j];
          transf[2] = 1;


        }

   
.
.
.
else
  {
    for (int i = 0; i < 5; i++)
    {
      transf[i] = 0;
    }
  }



void Blocks1(int transf[], int lung)
{
.
.
.
if (i % 200 == 0)
    {
      for (int i = 5; i < 11; i++)
      {
        transf[i] = 0;
      }



.
.
.
if (coordinatex0[j] > 270 && coordinatex0[j] <= 310 )
        {
          inserimento0[0] = coordinatex0[j];
          transf[5] = 1;
        }
        //////////////////////////////////////////////////////////
        if (coordinatex0[j] > 220 && coordinatex0[j] <= 270 )
        {
          inserimento0[1] = coordinatex0[j];
         transf[6] = 1;
        }
        //////////////////////////////////////////////////////////
        if (coordinatex0[j] > 120 && coordinatex0[j] <= 210 )
        {
          inserimento0[2] = coordinatex0[j];
          transf[7] = 1;


        }

   
.
.
.
else
  {
    for (int i = 5; i <11; i++)
    {
      transf[i] = 0;
    }
  }





void Blocks2(int transf[], int lung)
{
.
.
.
if (i % 200 == 0)
    {
      for (int i = 11; i < 16; i++)
      {
        transf[i] = 0;
      }



.
.
.
if (coordinatex0[j] > 270 && coordinatex0[j] <= 310 )
        {
          inserimento0[0] = coordinatex0[j];
          transf[11] = 1;
        }
        //////////////////////////////////////////////////////////
        if (coordinatex0[j] > 220 && coordinatex0[j] <= 270 )
        {
          inserimento0[1] = coordinatex0[j];
         transf[12] = 1;
        }
        //////////////////////////////////////////////////////////
        if (coordinatex0[j] > 120 && coordinatex0[j] <= 210 )
        {
          inserimento0[2] = coordinatex0[j];
          transf[13] = 1;


        }

   
.
.
.
else
  {
    for (int i = 11; i <16; i++)
    {
      transf[i] = 0;
    }
  }



void trasferimento(int a[], int trasf[])
{


for(int i=0; i<16; i++)
{
  a[i] = trasf[i];
}
ossia tre funzioni che modificano posizioni differenti dello stesso array, quindi blocks0 modifica dalla 0 alla 4, blocks1 dalla 5 alla 11, blocks2 dalla 11 alla 15 del array trasf, il quale poi trasferisce tutto in a[] e tutto logico, oppure ci sono osservazioni che ho trascurato?

grazie mille