#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

void main()
{
  float **A,**B,**C;
  int m,n,p;
  int i,j,k;

  clrscr();
  cout << "\nNumero de linhas de  A: ";
  cin >> m;
  cout << "\nNumero de colunas de A: ";
  cin >> n;
  cout << "\nNumero de colunas de B: ";
  cin >>p;

  A = new float*[m]; //A = (float *) malloc(m*sizeof(float)); ou A = (float *) calloc(m, sizeof(float));
  /*
               0  1  2  ..   n
    A[0] ==> |  |  |   |   |   |




  */
  for(i=0;i<m;i++)
    A[i]=new float [n];


  B = new float*[n];
  for(i=0;i<p;i++)
    B[i]=new float [p];

  C = new float*[m];
  for(i=0;i<p;i++)
    C[i]=new float [p];

  for(i=0;i<m;i++)
	for(j=0;j<n;j++)
	{
		cout << "\nA["<<i<<","<<j<<"] = ";
		cin >>A[i][j];
		cout<<A[i][j];
	}

  for(i=0;i<n;i++)
	for(j=0;j<p;j++)
	{
		cout << "\nB["<<i<<","<<j<<"] = ";
		cin >>B[i][j];
		cout<<B[i][j];
	}

  //multiplicação de matrizes
  for(i=0;i<m;i++)
	for(j=0;j<p;j++)
	{
		C[i][j] = 0;
		for(k=0; k<n; k++)
			C[i][j] += A[i][k]*B[k][j];
	}

  for(i=0;i<m;i++)
	for(j=0;j<p;j++)
		cout << "\nC["<<i<<","<<j<<"] = "<<C[i][j];


  getch(); // nao lembro se ainda existe

}
