Można zacząć tak:
float **matrix;
int matrixWidth = 0;
int matrixHeight = 0;
do{
cout << "Podaj liczbe kolumn ";
cin >> matrixWidth;
if(matrixWidth <= 0)
cout << "Nie poprawna wartość";
}while(matrixWidth <= 0);
do{
cout << "Podaj liczbe wierszy ";
cin >> matrixHeight;
if(matrixHeight <= 0)
cout << "Nie poprawna wartość";
}while(matrixHeight <= 0);
matrix = new float*[matrixHeight];
for(int rowNr = 0; rowNr < matrixHeight; rowNr++){
matrix[rowNr] = new float[matrixWidth];
}
for(int rowNr = 0; rowNr < matrixHeight; rowNr++){
for(int columnNr = 0; columnNr < matrixWidth; columnNr++){
matrix[0][0] = 0;
cout << matrix[0][0] << "\t";
}
cout << "\n";
}
Tylko, że trzeba by było zamknąć to w jakiejś klasie, żeby mieć łatwość obsługi operowania na takich macierzach. Dodatkowo musisz pamiętać o zwolnieniu pamięci oraz obsłudze konstruktora kopiującego i przenoszącego.