Question 6: Show the output (arrays) [6]

Show the precise output from the following C++ program:

#include <cstdio>

const int ArrSize = 3;
const float Data1[] = { 16, 8, 4 };
const float Data2[] = { 1.1, 2.2, 3.3 };

void fill(float arr[], int size);
void print(const float arr[], int size);

int main()
{
   const int dataSize = 2 * ArrSize;
   float myData[dataSize];
   fill(myData, dataSize);
   print(myData, dataSize);
}

void fill(float arr[], int size)
{
   printf("Filling array of size %d\n", size);
   for (int i = 0; i < size; i++) {
       int p = i / 2;
       if ((i % 2) == 0) {
          arr[i] = Data1[p];
       } else {
          arr[i] = Data2[p];
       }
   }
}

void print(const float arr[], int size)
{
   printf("Printing array of size %d\n", size);
   for (int i = 0; i < size; i++) {
       if (i > 0) {
          printf(", ");
       }
       printf("%g", arr[i]);
   }
   printf("\n");
}

Sample solution:
Filling array of size 6
Printing array of size 6
16, 1.1, 8, 2.2, 4, 3.3

Explanation:
   fill goes through positions i=0..5 of arr,
      pos = i/2, but this is integer division so rounds down,
      if i is even then takes from Data1[p]
                  otherwise from Data2[p]

   i   p   arr[i]
   0   0   16
   1   0   1.1
   2   1   8
   3   1   2.2
   4   2   4
   5   2   3.3