Зачем шаблоны так использовать не понятно, но да ладно...
Цитата:
еще проблема- ошибка в этой строке. 
 zadanieArray(a,n,m);
Вы просто не совсем правильно (не разобрались) используете шаблонные параметры и укзатели. Если первые две функции прощали это в следствие специфики языка и работы проца, то в этой компилятор уже не смог помочь. :(
1. 
Код:
int a[100][100];
Главное понять, что а, фактически, 
int**2.
Код:
 template <typename X> // здесь меняем местами столбцы
 void zadanieArray (X *a, int n, int m)
С учетом п. 1, что такое будет Х?