Exercício resolvido

16/08/2013 15:25

Dada duas matrizes A e B, calcular e imprimir a matriz C = A x B.

Solução:

//Erick Vivan
#include <stdio.h>
#include <stdlib.h>

main()
{
      int linha_a, coluna_a, linha_b, coluna_b, opcao_invalida, i, j, soma_produto, cont;
      int A[50][50], B[50][50], C[50][50];
      printf("Obter produto entre duas matrizes (A x B = ?).\n\n");
      while(opcao_invalida != 1)
      {
          printf("Forneca o numero de linhas da matriz A: ");
          scanf("%d", &linha_a);
          printf("Forneca o numero de colunas da matriz A: ");
          scanf("%d", &coluna_a);
          printf("\nForneca o numero de linhas da matriz B: ");
          scanf("%d", &linha_b);
          printf("Forneca o numero de colunas da matriz B: ");
          scanf("%d", &coluna_b);
          if(coluna_a != linha_b)
          {
                  system("cls");
                  printf("\nOps!\nO numero de colunas da matriz A deve ser igual ao numero de linhas da matriz B.\n\n");
                  opcao_invalida = 0;
          }
          else
          {
              opcao_invalida = 1;
          }
      }
      printf("\n\nForneca os elementos da matriz A:\n\n");
      for(i = 1; i <= linha_a; i++)
      {
            for(j = 1; j <= coluna_a; j++)
            {
                  printf("a%d%d = ", i, j);
                  scanf("%d", &A[i][j]);
            }
      }
      printf("\n\nForneca os elementos da matriz B:\n\n");
      for(i = 1; i <= linha_b; i++)
      {
            for(j = 1; j <= coluna_b; j++)
            {
                  printf("b%d%d = ", i, j);
                  scanf("%d", &B[i][j]);
            }
      }
      for(i = 1; i <= linha_a; i++)
      {
            for(j = 1; j <= coluna_b; j++)
            {
                  soma_produto = 0;
                  for(cont = 1; cont <= linha_b; cont++)
                  {
                           soma_produto = A[i][cont]*B[cont][j] + soma_produto;
                           C[i][j] = soma_produto;
                  }
            }
      }
      printf("\n\nA x B = \n\n");
      for(i = 1; i <= linha_a; i++)
      {
            for(j = 1; j <= coluna_b; j++)
            {
                  printf("%d     ", C[i][j]);
            }
              printf("\n");
      }
      printf("\n");
      system("pause");
}