D.Y., Тогда, что делает эта строка в главной функции
main()?
Код:

for(int i = 0; i < n; i++)
a1[i] = new int[n];
У меня просто у самого знаний нехватает.
Эти строки не используются в программе
Код:

const int dim1=20;
const int dim2=40;
В общем, ошибка где-то здесь:
Код:

...
a1 = new float* [n];
for(int i = 0; i < n; i++)
a1[i] = new float[n];
...