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:
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.
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
Muito obrigado Vanclei!
Oi Fábio, genial tudo, olha como faço pra que me saia na tela os números em formato bloco?, um abração.
rapaz to quebrando a cabeça com isso
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.
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
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
Ola, bom dia
tem como retirar essa minha duvida, tenho que terminar a lista para entregar amanhã.
aguardo retorno, Iago Henrique
Adorei imediatamente o livro é muito importante para mim e, é magnífico.