Ir ao conteúdo

Posts recomendados

Postado

Preciso verificar a diagonal de um indice especifico que a pessoa escolher, tem como fazer isso, sem ser na diagonal principal ou secundaria?

918422364_Capturadetela2022-01-26145212.png.c8411b0a03751d406d778a256d5b7367.png

tentei fazer dessa forma, pro primeiro quadrante,

for (i = vetor[0] , j = vetor[1]; i >= 0 || j >= 0; i--, j--) {
            printf("%d\n", tabuleiro[i][j]);
        }

porém ele apresenta problemas dependendo do indice que eu pegue.

 

obs: vetor[0] e [1] sao coluna e linha...

 

 

Postado

@Diovani Facco eu sempre penso matrix ou array como tabela o link ai é uma idea bem simular

                                se persamos em coordenadas  de uma tabela 
                                o numero 7 esta em [6] [4] e o numero dois esta em [5] e [3] 
                                 vendo os numeros de indice vermos que disminuiu um em cada linha e coluna  achamos                                   a diagonal
                                é só uma ideia mas você pode descobrir os numeros da diagonal transformando
                                 os indices em variaveis e diisminuir um nos indices ate o [0] 

                                outra ideia seria achar um padrão 6 esta no indice  e o 1 esta no 3  6:2=3 é so um

                                exemplo teria que pensar isso pra varios exemplos

 


https://www.clubedohardware.com.br/forums/topic/1583260-gostaria-de-compreender-a-lógica-do-código/

  • Curtir 1
Postado

A diagonal pode ser na direção da principal ou secundária, no print parece querer da principal. Se for isso pegue a linha e coluna passada como referência e teste o maior para fazer o loop da diagonal.

 

No caso da linha maior que a coluna, você pode passar a diferença para o índice das linhas e para o tamanho do contador (se a coluna for maior é no índice das colunas),

 

for(int i = 0; i < MAX - (linha - coluna); i += 1){
    printf(" %d",matriz[i + (linha - coluna)][i]);
}

 

Exemplo das saídas,

Linha, coluna: 5,2
 5 7 3 4 7 9 4 2 5 3
 7 5 6 0 7 5 0 0 6 5
 0 1 6 3 7 2 1 2 9 8
 7 4 7 2 1 4 3 5 8 8
 8 5 6 7 7 3 2 9 5 1
 4 5 4 3 9 4 7 2 6 8
 2 3 5 9 8 6 5 1 3 6
 0 2 3 6 1 1 1 3 2 6
 6 7 3 1 2 4 5 1 8 1
 9 2 7 4 3 5 2 9 8 6

 7 5 4 9 1 4 2

 

Linha, coluna: 2,5
 5 7 3 4 7 9 4 2 5 3
 7 5 6 0 7 5 0 0 6 5
 0 1 6 3 7 2 1 2 9 8
 7 4 7 2 1 4 3 5 8 8
 8 5 6 7 7 3 2 9 5 1
 4 5 4 3 9 4 7 2 6 8
 2 3 5 9 8 6 5 1 3 6
 0 2 3 6 1 1 1 3 2 6
 6 7 3 1 2 4 5 1 8 1
 9 2 7 4 3 5 2 9 8 6

 4 7 2 3 9 6 6

 

  • Curtir 1
Postado

@Diovani Facco Olá!

Como já dito nos postes acima desse, 

 

Esse índice específico é o extremo (b) da diagonal principal da submatriz determinado por ele mesmo. Para saber a ordem dessa diagonal no tabuleiro é preciso por meio do extremo (b) determinar o outro "acima dele", seu extremo (a).

 

Sabe que a submatriz é quadrada, e que o outro extremo, talvez esteja na coluna 0

 

Como sugerido:

(a)coluna = 0

(a)linha    = (b)linha   MENOS   (b)coluna

— SE (b)coluna   MENOR_IGUAL   (b)linha

 

— Do contrário, "a direção" não fica para as linhas, vai para as colunas e (a)linha = 0

Sem novidade!

[:)

 

 

 

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...