Bom dia pessoal. Estou no primeiro semestre do curso de Ciência da Computado e estou tendo uma grande dificuldade de entender matriz. O professor passou dois exercícios resolvidos que eu não estou conseguindo entender. Por favor vocês usuários experientes do fórum, poderiam me ajudar a entender esses dois exercícios que parecem tão complexo para a minha cabeça ????
Exercício 1algoritmo "Multiplicacao_de_Matrizes"
// Desenvolva um algoritmo que leia 2 matrizes de números reais, de tamanhos
// 4x5 (4 linha e 5 colunas) e 5x1, e realize a multiplicação das matrizes,
// mostrando na tela ao final. (lembre-se que a multiplicação resultará em
// uma matriz de 4x1 e é feita multiplicando a primeira linha da primeira pela
// primeira coluna da segunda,...)
var
// A primeira matriz (M1) precisa de dois índices
// A segunda matriz (M2) só precisa de um índice (já que só tem 1 linha)
// A matriz resultado (M3) só possui uma linha também
M1: vetor [1..4, 1..5] de real // 4x5
M2: vetor [1..5] de real // 5x1
M3: vetor [1..4] de real // Matriz de Resposta 4x1
linha, coluna, contador: inteiro
inicio
// Inicialmente, deve-se ler as duas matrizes
escreval ("Digite os valores da matriz de 4x5:")
para linha de 1 ate 4 passo 1 faca
para coluna de 1 ate 5 passo 1 faca
escreva ("M1[",linha,", ",coluna,"]: ")
leia (M1[linha,coluna])
fimpara
fimpara
// Como a segunda matriz só possui 1 coluna, só precisamos de
// um contador, para a linha.
escreval ("Digite os valores da matriz de 5x1:")
para linha de 1 ate 5 passo 1 faca
escreva ("M1[",linha,",1]: ")
leia (M2[linha])
fimpara
// Com as duas matrizes lidas, realizamos a multiplicação das matrizes.
// Precisamos de um contador contar as linhas da primeira matriz.
//(será o mesmo contador da linha da Matriz resultado M3)
para linha de 1 ate 4 passo 1 faca
// Cada linha deve ser multiplicada por cada coluna na segunda matriz
// Como a segunda Matriz só tem 1 coluna, nao precisamos de um laco
// Nao usaremos o contador:
//
// para coluna de 1 ate 1 passo 1 faca
//
// Devemos multiplicar cada valor da primeira linha pelo valor correspondente
// na coluna da segunda matriz (número da coluna da primeira linha é igual ao
// número da linha na segunda coluna)
// Para multiplicar cada valor da linha na primeira matriz, usamos um contador,
// que será o mesmo para a linha da matriz M2 (o numero de colunas de M1 tem
// que ser igual ao número de linhas de M2 para que se possa multiplicar
// duas matrizes).
M3[linha] <- 0
para contador de 1 ate 5 passo 1 faca
// Cada célula de M3 é calculada pela soma das multiplicaçoes de
// valor da linha de M1 pelo valor correspondente da coluna
// de M2.
M3[linha] <- M3[linha] + M1[linha, contador] * M2 [contador]
fimpara
// fimpara - caso houvesse sido feito o segundo para
fimpara
// Depois, o vetor deve ser mostrado
limpatela
escreval ("Vetor M1:")
escreval ("") // para mudar de linha
para linha de 1 ate 4 passo 1 faca
para coluna de 1 ate 5 passo 1 faca
escreva (M1[linha,coluna], " ")
fimpara
escreval ("")
fimpara
escreval ("") // para mudar de linha
escreval ("Vetor M2:")
escreval ("") // para mudar de linha
para linha de 1 ate 5 passo 1 faca
escreval (M2[linha]," ")
fimpara
escreval ("") // para mudar de linha
escreval ("Vetor Resultado da Multiplicacao:")
escreval ("") // para mudar de linha
para linha de 1 ate 4 passo 1 faca
escreval (M3[linha]," ")
fimpara
fimalgoritmo
algoritmo "Calculo_de_Notas"
// Desenvolva um algoritmo que leia 3 notas (P1, P2 e Trabalhos) de cada aluno
// de uma sala de ATÉ 20 alunos (deve ser possível cadastra qualquer
// quantidade de alunos entre 1 e 20). Para cauda aluno, calcular a media (M)
// obtida até o momento (0,4 x P1 + 0,4 x P2 + 0,2 x T). Se a nota for menor
// que 7, calcular e armazenar a nota que ele necessita tirar no exame (E),
// sabendo-se que a media após o exame é calculada como (M + E)/2 e que precisa
// ser no mínimo 5 para aprovação do aluno (E >= 10-M).
// Mostre ao final o número de alunos que existem na sala, as notas de cada um
// e quantos estão de exame.
var
// Usaremos uma Matriz de 20 linha por 5 colunas, representando, cada linha, um
// aluno, e, cada coluna, uma nota.
Notas: vetor [1..20, 1..5] de real
linha, coluna: inteiro
alunosSala, alunosExame: inteiro
Continua: caractere
inicio
// Inicialmente, deve-se ler as notas dos alunos
// Podem ser cadastrados ate 20 alunos, portanto
// o usuário deve indicar quando terminar.
// Usaremos uma estrutura de repetição com condição no final,
// pois ao menos um aluno deve ser cadastrado
escreval ("Cadastre as notas de até 20 alunos.")
linha <- 0 // inicia o contador das linhas com zero
alunosSala <- 0 //inicia o contador de alunos da sala com zero
alunosExame <- 0 //inicia o contador de alunos de exame com zero
Continua <- " "
repita
linha <- linha + 1
alunosSala <- alunosSala + 1
limpatela
escreval ("Aluno ",linha,":")
// As três primeiras colunas armazenarão as notas P1, P2 e T.
escreva ("Entre com a nota P1: ")
leia (Notas[linha,1])
escreva ("Entre com a nota P2: ")
leia (Notas[linha,2])
escreva ("Entre com a nota de Trabalhos: ")
leia (Notas[linha,3])
// Calcula a Média
// Média = 0,4 x P1 + 0,4 x P2 + 0,2 x T
Notas[linha,4] <- 0.4 * Notas[linha,1] + 0.4 * Notas[linha,2] + 0.2 * Notas[linha,3]
// Se a nota for menor que 7, calcular e armazenar a nota que ele necessita
// tirar no exame (E), sabendo-se que a media após o exame é calculada
// como (M + E)/2 e que precisa ser no mínimo 5 para aprovação do aluno
// (E >= 10-M).
se (Notas[linha,4] < 7) entao
// aluno ficou em Exame
Notas[linha,5] <- 10 - Notas[linha,4]
// conta mais um aluno de exame
alunosExame <- alunosExame + 1
fimse
// Verifica se usuario deseja continuar cadastrando notas
escreval ("")
escreval ("")
escreval ("Caso deseje cadastrar mais um aluno, digite 'S'.")
escreval ("Digite qualquer outro valor para terminar o cadastro.")
leia (Continua)
ate (Continua <> "S")
// Terminado o cadastramento, o sistema deve listar os alunos e as respectivas
// notas
limpatela
escreval ("Foram cadastrados ", alunosSala, " alunos nesta sala.")
escreval ("")
escreval ("Listagem das notas:")
escreval ("")
escreval ("P1, P2, T, Media, Nota necessaria no exame (se ficou de exame)")
escreval ("")
para linha de 1 ate alunosSala passo 1 faca
escreva ("P1: ",Notas[linha,1],", P2: ", Notas[linha,2], ", T: ", Notas[linha,3],", Média: ", Notas[linha,4])
se (Notas[linha,4]<7) entao
escreval (", Aluno precisa tirar ",Notas[linha,5]," no exame.")
senao
escreval("")
fimse
fimpara
escreval ("")
escreval (alunosExame," aluno(s) ficou(aram) para exame.")
fimalgoritmo
Obrigado!!