Ajuda no entendimento do exercício

5 respostas
M

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 1
algoritmo "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)  precisa de um índice ( que  tem 1 linha)
// A matriz resultado (M3)  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  possui 1 coluna,  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  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
Exercícico 2
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!!

5 Respostas

davidbuzatto

O que você não entendeu?
O código está todo documentado, além de estar escrito em português estruturado.

[]'s

ssh

vish maria amigo, nao vo le tudo isso! haha

M

Eu não conseguiu como que se faz a soma de uma matriz, eu consegui entender cmom eu faço para receber os valores de uma matriz, mas não entendi como eu posso somar os valores de duas matriz.

InicianteJavaHenriqu

Mazoni,

Vc entende que matrizes, vetores ou array (nomenclatura) são variáveis agrupadas :?:

Vamos imaginar um vetor como sendo uma “caixa” com vários lugares separados para guardar seus dados (inteiro, real ou caracter), ou seja, uma variável onde se pode armazenar mais de um dado (homogênico).

|||||||||

Vetor de 8 posições

No exemplo abaixo, temos um vetor com dados armazenados nas 5 primeiras posições.

|a|b|c|d|e|||_|

Para poder acessar o conteúdo desse vetor, vamos utilizar a sintaxe: nome[posição].

Ex: meuvetor[2]

  • O retorno será a letra b.

Isto que dizer que as mesma regras de declaração, atribuição, e acesso a variáveis simples se aplica tbm a vetores e matrizes

Se podemos somar duas variáveis:

variavelC = variavelA + variavelB

Tbm podemos somar posições de vetores:

vetor[3] = vetor[0] + vetor[1]

Ou de matrizes:

matriz[0,3]= matriz[0,0] + matriz[0,1]

Simples né :?:

qlq duvida é só postar ou ver no Google que tem vários exemplos

flw :smiley: :smiley: :smiley:

M

Muito obrigado, de uma forma simples você conseguiu me explicar como é feita a soma de matrizes, mas acho que só fazendo muitos exercícios sobre matriz pra eu conseguir assimilar melhor como é feito na prática.

Muito obrigado!

Criado 23 de dezembro de 2011
Ultima resposta 24 de dez. de 2011
Respostas 5
Participantes 4