Łap gotowe rozwiązanie. I nie baw się w operacje arytmetyczne na wskaźnikach, jeśli niezbyt dobrze się w nich czujesz. :-P 
 
#include <cstdlib>#include <iostream>using std::cout;using std::cin;using std::endl;using std::system;int** nowa(int);void wyswietl(int**, int);void zeruj_powyzej_glownej_przek(int**, int);void zeruj_ponizej_glownej_przek(int**, int);void zainicjuj(int, int**, int);int main(){  int n;  cout<<"Podaj n: ";  cin>>n;  int** tab = nowa(n);  if(!tab) return 0;  zainicjuj(1, tab, n);  zeruj_powyzej_glownej_przek(tab, n);  zeruj_ponizej_glownej_przek(tab, n);  wyswietl(tab, n);  system("PAUSE");  return 0;}int** nowa(int n){  int** tab = 0;  if(!(tab = new int*[n]))	return 0;  for(int i=0; i<n; i++)	tab[i] = new int[n];  return tab;}void wyswietl(int** tab, int n){  for(int i=0; i<n; i++)  {	for(int j=0; j<n; j++)	  cout<<tab[i][j]<<' ';	cout<<endl;  }}void zeruj_powyzej_glownej_przek(int** tab, int n){  for(int i=0; i<n; i++)	for(int j=i+1; j<n; j++)	  tab[i][j] = 0;}void zeruj_ponizej_glownej_przek(int** tab, int n){  for(int j=0; j<n; j++)	for(int i=j+1; i<n; i++)	  tab[i][j] = 0;}void zainicjuj(int liczba, int** tab, int n){  for(int i=0; i<n; i++)	for(int j=0; j<n; j++)	  tab[i][j] = liczba;}