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

(Resolvido) Ajuda com matrizes...


Bashton

Pergunta

Olá, amigos! Nessecito de uma ajuda em um algoritmo!

O enunciado propoem que seja lida uma matriz de 4x4. E a seguir trocar a diagonal interna/principal, pela externa/secundária.

Ai vem meu problema, não sei como fazer a troca sem ser manualmente...Mas eu preciso fazer que funcione tanto para uma de 4x4 quanto para uma de 100x100.

Preciso de uma ajuda agradeço de antemão!

Obrigado!

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

4 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Bashton' !

Voce disse

... não sei como fazer a troca sem ser manualmente...

Então descreva como você faria manualmente. Passo a passo (não pule nehum passo). Se você conseguir descrever, então seu algorítimo estará 90% pronto. Faça e poste aqui sua dúvida que te auxiliaremos.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá! A matriz é de 4x4, não 5x5 como botei acima.

O jeito manual que eu fiz é esse:

aux <- M[1,4]
M[1,4] <- M[1,1]
M[1,1] <- aux

aux <- M[2,3]
M[2,3]<- M[2,2]
M[2,2]<- aux

aux<- M[3,2]
M[3,2] <- M[3,3]
M[3,3] <- aux

aux <- M[4,1]
M[4,1]<- M[4,4]
M[4,4] <- aux

Funciona, porém...Se aumentar a matriz, terei que mudar todos os valores...

E é aí que entra minha dúvida.

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

  • 0

Oi, 'Bashton'!

Observe o padrão

Linha é uma variável que linha cresce incrementando em 1 a cada interação de um laço (PARA ou ENQUANTO)

Em coluna teremos duas variáveis coluna1 e coluna2.

Coluna1 é a posição da linha, ou seja se linha = 1 então coluna1 = 1; se linha = 2 então coluna1 = 2 e assim em diante.

Coluna2 inicia com o tamanho máximo da matriz, ou seja se matriz é 4 x 4 então coluna2 = 4

Coluna2 é decrementado em 1 a cada interação do laço (avanço de linha).

Daí é só aplicar o que você já fez.

Fazendo a primeira interação seria assim (o que você fez)

aux <- M[1,4]

M[1,4] <- M[1,1]

M[1,1] <- aux

Montando a lógica teríamos

declarando as variaveis tamanhomatriz, aux, linha, col1, col2

atribua um valor para tamanhomatriz

Atribua o valor em tamanhomatriz na variável col2

Atribua o valor 1 para a variável linha

inicie o laço

Atribua o valor de linha para col1

Atribua o valor de M[linha,col2] para aux

Atribua o valor de M[linha,col1] para M[linha,col2]

Atribua o valor de aux para M[linha,col1]

Incremente linha em 1

Decremente col2 em 1

Verifique se linha atingiu valor em tamanhomatriz

Se não atringiu volte para "inicie o laço"

Se atingiu fim

Faça para que possamos continuar.

Link para o comentário
Compartilhar em outros sites

  • 0

Ola, Denis

Obrigado pela ajuda, con segui fazer o algoritmo funcionar!

Muito grato!

Fiz dessa maneira:

Para linha<-1 ate tamanhomatriz faca
coluna <- linha
aux <- Matriz[linha,(tamanhomatriz - linha +1)]
Matriz[linha,(tamanhomatriz - linha +1)] <- Matriz[linha,coluna]
Matriz[linha,coluna] <- aux
Fimpara

Atribuí o valor do tamanho da matrix (no caso, 4) e atribuí no ínicio do laço o mesmo valor de linha para coluna, numa repetição do tamanho da matriz, que seria o número de trocas a ser feitas

Agradecido,

Bashton

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

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