I think that the problem is that you do the division at each step. You need to do the division only once at end.
Thus
averageCollatz
would be renamed
sumCollatz
and last line would be:
return total;
Then you would have:
double averageCollatz(unsigned int num)
{
unsigned steps = collatz(num);
double sum = sumCollatz(num);
return sum / steps;
}
You might have to treat the case for n equals to 0.