Hey guys I trying to compute averages by row and store them in an array so that I can later print the array holding the averages. However for some reason the program crashes after creating the initial 2 dimensional array. The compiler isn't showing any errors anyone see what's wrong? Any help would be great!

Code:

#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
const int ROW = 3;
const int COL = 4;
const int LOW = 1;
const int UP = 50;
const int SIZE = 4;
void GenerateArray(int[][COL], int, int, int, int);
void GenerateAverages(int[][COL], float[], int, int, int);
void PrintArray(int[][COL], int, int);
void PrintAveArray(float[], int);
int main()
{
srand(time(NULL));
int table[ROW][COL] = {0};
float a_table[SIZE] = {0};
GenerateArray(table, ROW, COL, LOW, UP);
PrintArray(table, ROW, COL);
cout << "\n\n";
GenerateAverages(table, a_table, ROW, COL, SIZE);
PrintAveArray(a_table, SIZE);
cout << "\n\n";
}//END OF MAIN
void GenerateArray(int t[ ][COL], int row, int col, int lower_limit, int upper_limit){
for (int r = 0; r < row; r++)
for (int c = 0; c < col; c++)
t[r][c] = rand()%(upper_limit - lower_limit + 1) + lower_limit;
}
void PrintArray(int t[][COL], int row, int col){
for (int r = 0; r < row; r++){
for (int c = 0; c < col; c++)
cout << setw(5) << t[r][c];
cout << endl;
}
}
void PrintAveArray(float t[], int size){
for (int i = 0; i < size; i++)
cout << setw(5) << t[i];
cout << endl;
}
void GenerateAverages(int table[][COL], float a[], int r, int c, int size){
int total = 0;
int i = 0;
float average = 0;
for (c = 0; c < COL; c++){
total = 0;
average = 0;
for (r = 0; r < ROW; r++)
{
total = total + table[r][c];
average = (float)(total/ROW);
}
a[c] = average;
}
}