Multiplicação de matrizes dinâmicas em C/C++

Este programa gera uma matriz C a partir da multiplicação de duas outras matrizes. É interessante para quem está tentando aprender como funciona matrizes dinâmicas. Confira o enunciado abaixo, seguido pelo código:

“Faça um programa que leia duas matrizes 3 x 3 e em seguida calcule e apresente a multiplicação dessas matrizes.”

#include <stdlib.h>
#include <stdio.h>

int leMatriz(int l, int c, int **mat);
int multMatriz(int l, int c, int **matA, int **matB, int **matC);

main()
{
      int **matA, **matB, **matC, l = 3, c = 3;     
      
      matA = (int **)malloc(sizeof(int)*l);
      
      for (int i = 0; i < l; i++)
          matA[i] = (int *)malloc(sizeof(int)*c);
      
      matB = (int **)malloc(sizeof(int)*l);
      
      for (int i = 0; i < l; i++)
          matB[i] = (int *)malloc(sizeof(int)*c);      
      
      matC = (int **)malloc(sizeof(int)*l);
      
      for (int i = 0; i < l; i++)
          matC[i] = (int *)malloc(sizeof(int)*c);      
      
      printf("\n MATRIZ A:\n\n");
      leMatriz(l, c, matA);     
      printf("\n MATRIZ B:\n\n");
      leMatriz(l, c, matB);     
      printf("\n\nMULTIPLICACAO DAS MATRIZES:\n\n");
      multMatriz(l, c, matA, matB, matC);
      system("pause");
}

int leMatriz(int l, int c, int **mat)
{
    for (int i = 0; i < l; i++)
    {
        for (int j = 0; j < c; j++)
        {
            printf("\nDigite a posicao [%d][%d] da matriz: ", i+1, j+1);
            scanf("%d", &mat[i][j]);
        }
    }
}

int multMatriz(int l, int c, int **matA, int **matB, int **matC)
{      
      for (int i = 0; i < 3; i++)
      {
          for (int j = 0; j < 3; j++)
          {
              matC[i][j] = 0;
              for (int k = 0; k < 3; k++)
                  matC[i][j] += matA[i][k] * matB[k][j];
              printf("%d\t", matC[i][j]);
          }
          printf("\n"); 
      }
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s