Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com diagonal secundária e elementos abaixo dela!


Ghonchu

Pergunta

Tenho uma dúvida quanto a especificar os paras nas matrizes. Por exemplo... a matriz principal, os índices são iguais. Ok

Na matriz secundária, o índice da linha decresce e o da coluna aumenta.

Crio um para que na medida que conta diminui o número da linha e aumenta a coluna --- ok

Agora os elementos abaixo da diagonal secundária, eu não acho nenhuma lógica para definir eles. Os indices que aparecem são aleatórios. Como resolveria esse problema?

Fazer um algoritmos que leia uma matriz quadrada 4 x 4 (números inteiros e positivos).Execute as seguintes operações:

a) A media dos elementos acima da diagonal secundária, e média dos elementos abaixo da diagonal secundária.

Como seria a mesma situação caso ao invés da diagonal secundária, fosse pedido a primária?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

EDIT: Acho que tinha postado algo totalmente fora da sua pergunta antes. Para calcular a média aritmética dos elementos abaixo da diagonal principal, precisamos de algumas considerações teóricas.

Suponha que se tenha uma matriz M, e que seu elemento (i,j) seja acessível pelo comando M(i, j). Suponha que ela seja 4x4.

(1) Os elementos da diagonal principal são M(i, i), para i variando de 1 a 4.

(2) Fixada uma coluna k qualquer (com 1 <= k <= 4, é claro, pois a matriz é 4x4), o elemento da diagonal principal é o elemento M(k, k), segundo (1). Estamos na seguinte situação:

Coluna k:

M(1, k)

M(2, k)

M(k-1, k)

M(k,k) <- elemento da diagonal principal

M(k+1, k)

M(4,k)

Agora basta observar que os elementos que estão acima da diagonal principal são os elementos que estão acima de M(k,k). Ou seja, são os elementos M(1, k), M(2, k), ..., M(k-1, k). Os elementos, por sua vez, que estão abaixo da diagonal principal são aqueles abaixo de M(k, k), quais sejam: M(k+1, k), M(k+2, k), ..., M(4, k).

(Ficou claro? Pode falar se não estiver, essa parte é a mais importante)

Agora vamos à parte computacional. O que se quer é calcular a média aritmética de um conjunto de elementos. A média aritmética de um conjunto de números é a soma de todos os seus elementos dividida pelo número de elementos do conjunto.

Então façamos o seguinte: uma variável, Soma, vai armazenar a soma dos elementos abaixo da diagonal principal. Outra variável, Cont, vai armazenar o número de elementos que foram usados. Usemos agora um raciocínio indutivo.

Suponha fixada, mais uma vez, a coluna k. Suponha que as variáveis Soma e Cont já estejam definidas. O que se fará, agora, é acrescentar à variável Soma todos os valores que estão abaixo da diagonal principal, e, cada vez que se acrescentar um valor, aumentar em 1 o valor de Cont. Mas já vimos que os valores abaixo da diagonal principal são do tipo M(k+1, k), ..., M(4, k)!

Para a coluna k, ter-se-á, portanto:

// Já se tem definidas Soma e Cont. 

PARA i=1 até i=4, faça:
  Soma = Soma+M(k+i, k) 
  Cont = Cont+1
FIM PARA

Começando com Soma = 0 e Cont = 0, você pode aplicar esse processo para todas as colunas fazendo k variar de 1 a 4! No fim, a variável Soma terá armazenado a soma de todos os valores abaixo da diagonal principal e a variável Cont terá armazenado o número de elementos desse tipo.

Como diria meu professor: botei a bola na marca do pênalti. Agora é só marcar gol.

Editado por John Doe
Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe pela demora, estou bem enrolado com a matéria e fiquei a semana ausente.

PARA i=1 até i=4, faça:
  Soma = Soma+M(k+i, k) 
  Cont = Cont+1
Poxa mano, tu me ajudou muito! Não sabia que no para poderia usar esse método de contagem. há! Genial xD Eu estava com dificuldade porque achava que os contadores só se usavam (usualmente) com o comando ,Enquanto. Até ai ótimo, mas ainda falta a grande questão. Os elementos abaixo da diagonal secundária. Ai não se tem muita lógica. É possível fazer um para que automaticamente pegue os elementos abaixo da diagonal principal, e coloque-os para calcular a média? Minha idéia é fazer um comando [para- faca] que automaticamente junte os elementos da diagonal abaixo da secundária. Sem que eu precise ficar atribuindo os índices. Ex:
média<- m_a[2,4] + m_a[3,3] + m_a[3,4] + m_a[4,2] + m_a[4,3] + m_a[4,4] / 6

-

|1| |2| |3| |4|(1,4)

|1| |2| |3|(2,3) |4|(2,4)

|1| |2|(3,2) |3|(3,3) |4|(3,4)

|1|(4,1) |2|(4,2) |3|(4,3) |4|(4,4)

To super mal na disciplina (algoritmos), como fazer para melhorar? Tinha dificuldade também no início?

Editado por Ghonchu
Link para o comentário
Compartilhar em outros sites

  • 0

Começando pelo fim. Não lembro quem disse que existem dois meios igualmente válidos de aprender matemática: estudando muito ou se acostumando. Acho que o caso dos algoritmos é bem análogo...

Enfim, quanto à diagonal secundária, uma vez que você fez a função para a diagonal principal, basta você refletir a matriz como na figura (na verdade é ao contrário, mas o princípio é igual):

reflexfin.jpg

e aplicar a função à matriz refletida!

Mas observe que essa reflexão simplesmente troca a primeira coluna pela quarta, e a segunda pela terceira. Se você tiver dificuldade em implementar esse algoritmo (pega uma matriz 4x4, troca a primeira coluna pela quara e a segunda pela terceira), pode postar aqui.

PS: O uso de contadores no while é necessário porque a variável que você usa dentro do loop também aparece no controle. O funcionamento do for ali em cima não dependia do contador.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...