Exercício de Lógica de Programação: Soma de Matrizes

Soma de Matrizes em Lógica de Programação

Olá pessoal! Nesta lição nós vamos mostrar mais um algoritmo resolvido para nosso curso de Lógica de Programação. O problema que vamos resolver é o seguinte:

Elabore um programa que peça ao usuário para informar 16 números, e os armazene em uma matriz 4×4.

Em seguida, o algoritmo deve solicitar ao usuário que entre com mais 16 números, e os armazene em uma segunda matriz 4×4.

O algoritmo, finalmente, deve realizar a soma das duas matrizes e mostrar na tela o resultado, na forma de uma tabela (matriz).

O resultado a ser obtido deve ser semelhante ao seguinte:

Soma de Matrizes - Lógica de Programação

Para efetuar a soma de matrizes, basta efetuar a soma de cada posição correspondente em cada uma delas.

Vamos ao código que resolve nosso problema:

Código (português estruturado para VisualG):

Algoritmo "Soma de Matrizes"
// Autor : Fábio dos Reis
Var
// Criando três matrizes 4x4
A: vetor[0..3,0..3] de inteiro
B: vetor[0..3,0..3] de inteiro
S: vetor[0..3,0..3] de inteiro
linha, coluna: inteiro
Inicio
escreval("Algoritmo para soma de matrizes 4x4")
// preenchendo as duas matrizes
escreval("")
escreval("Preenchendo a matriz A:")
para linha de 0 ate 3 faca
   para coluna de 0 ate 3 faca
      escreval ("Digite um número para inserir na matriz A")
      leia (A[linha,coluna])
   fimpara
fimpara
escreval("")
escreval("Preenchendo a matriz B:")
para linha de 0 ate 3 faca
   para coluna de 0 ate 3 faca
      escreval ("Digite um número para inserir na matriz B")
      leia (B[linha,coluna])
   fimpara
fimpara
// Efetuando a soma das duas matrizes e armazenando o resultado na matriz S:
para linha de 0 ate 3 faca
   para coluna de 0 ate 3 faca
      S[linha,coluna] <- A[linha,coluna] + B[linha,coluna]
   fimpara
fimpara
escreval("")
// Exibindo os resultados na tela:
escreval("Conteúdo da matriz A:")
para linha de 0 ate 3 faca
   para coluna de 0 ate 3 faca
      se coluna < 3 entao
         escreva (A[linha,coluna])
      senao
         escreval (A[linha,coluna])
      fimse
   fimpara
fimpara
escreval("Conteúdo da matriz B:")
para linha de 0 ate 3 faca
   para coluna de 0 ate 3 faca
      se coluna < 3 entao
         escreva (B[linha,coluna])
      senao
         escreval (B[linha,coluna])
      fimse
   fimpara
fimpara
escreval("A soma das matrizes A e B é:")
para linha de 0 ate 3 faca
   para coluna de 0 ate 3 faca
      se coluna < 3 entao
         escreva (S[linha,coluna])
      senao
         escreval (S[linha,coluna])
      fimse
   fimpara
fimpara
Fimalgoritmo

Para resolver nosso problema, começamos criando três arrays bidimensionais (matrizes), 4×4, de nomes A, B (que serão somados) e S (que armazenará o resultado da soma).

Logo após a declaração dos arrays, devemos preenchê-los usando dois laços de repetição for (para) aninhados. Você pode também adaptar o código para usar preenchimento automático, usando números aleatórios, de modo a facilitar o teste do algoritmo posteriormente (para não precisar digitar todos os 32 valores das matrizes, 16 em cada uma!).

A soma das duas matrizes é efetuada com o seguinte trecho de código:

para linha de 0 ate 3 faca
   para coluna de 0 ate 3 faca
      S[linha,coluna] <- A[linha,coluna] + B[linha,coluna]
   fimpara
fimpara
escreval("")

Simplesmente atribuímos a cada posição na matriz S a soma das posições correspondentes nas matrizes A e B.

Logo em seguida, exibimos na tela os conteúdos das três matrizes. Assim, o problema estará resolvido.

Sobre Fábio dos Reis (1376 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

9 Comentários em Exercício de Lógica de Programação: Soma de Matrizes

  1. Vanclei Alves da Silva Ferreira // 28/11/2018 em 15:08 // Responder

    Fábio,meu caro amigo estou adorando os seus cursos de Rede, Lógica de programaçâo,Rede Linux e muito mas. Seu ensinamentos sâo excelêntes estou aprendendo muito,já gostava agora entâo ficou ainda melhor

  2. Oi Fábio, genial tudo, olha como faço pra que me saia na tela os números em formato bloco?, um abração.

  3. Wanderson P. Rambo // 19/11/2019 em 1:14 // Responder

    rapaz to quebrando a cabeça com isso

  4. Iago Henrique // 17/11/2020 em 22:42 // Responder

    Boa noite, tudo bem?
    Como ficaria essa resolução numa matriz 2×2

    aguardo retorno, att. Iago Henrique

    • Neste caso basta mudar os tamanhos das matrizes na declaração, de vetor[0..3,0..3] para vetor[0..1,0..1] (matriz 2×2).
      Também será necessário alterar os laços para de acordo, para o preenchimento, soma e visualização dos resultados obtidos. Sempre alterando o valor da ultima posição da matriz, tanto linha quanto coluna, para que sejam acessadas apenas as duas posições existentes.

      • iago Henrique // 18/11/2020 em 10:17 // Responder

        Bom dia
        deixa eu ver se entendi, aonde tem para linha de 0 até 3 no exemplo que vc realizou, o meu aki, ficará para linha e coluna de 0 até 1 Faça?
        e na hora de exibir os resultados na tela, será: Se coluna < 2 então …
        procede?
        E teria como me auxiliar em outras questões.
        aguardo retorno, att. Iago

  5. iago Henrique // 19/11/2020 em 10:49 // Responder

    Bom dia
    deixa eu ver se entendi, aonde tem para linha de 0 até 3 no exemplo que vc realizou, o meu aki, ficará para linha e coluna de 0 até 1 Faça?
    e na hora de exibir os resultados na tela, será: Se coluna < 2 então …
    procede?
    E teria como me auxiliar em outras questões.
    aguardo retorno, att. Iago

  6. iago Henrique // 20/11/2020 em 12:08 // Responder

    Ola, bom dia
    tem como retirar essa minha duvida, tenho que terminar a lista para entregar amanhã.

    aguardo retorno, Iago Henrique

Escreva um comentário

Seu e-mail não será divulgado


*