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

Percorrer diagonais de matriz MxN


zaratustra

Pergunta

Olá,

estou fazendo um trabalho de caça paralavra e estou com dificuldade para percorrer as diagonais de uma matriz MxN(tamanho definido pelo usuário), já fiz todo o resto, falta apenas a lógica para as diagonais que estou tendo dificuldade, até fiz uma aqui, mas não ficou muito bom o resultado. Segue o código da função que busca nas diagonais.

void busca_diagonal(int m, int n, char** matchar)
{
     int maxdiag = m;
     int i, j;

     
     for(i = 0; i < maxdiag ; ++i){
       printf("\nDiagonal[%d][0]:",i);


     for(j = 0; j < maxdiag - i; ++j){
       printf("%c",matchar[j][j+i]);

          }
     if(i!=0){
       printf("\nDiagonal[0][%d]:",i);


     for(j = 0; j <maxdiag - i; ++j){
       printf("%c",matchar[j][j+i]);

        }
    }
} 

}

Se não fui claro acima, vou tentar ser agora.

Tenho um jogo de caça palavra que também busca nas diagonais / e \.

Obrigado.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Tarde!

Legal isso!

Basicamente você vai ter 4 diagonais né!?

Dois sentidos para cada diagonal.

/ -> Uma indo para cima e outra indo para baixo

\ -> Uma indo para cima e outra indo para baixo

A diagonal do elemento x[j], pertencente a matriz A[m][n], vai ser todo elemento x[i+q][j+q], sendo m > i+q > 0 e n > j+q > 0, considerando q inteiro e i,j naturais.

Veja se ajuda:

#include <stdlib.h>
#include <stdio.h>

void percorreDiagonalDireitaParaBaixo( int x, int y, int linha, int coluna, int v[][4] ){
    while( x < linha && y < coluna ){
        printf( "%d\t" , v[x++][y++] );
    }
}

int main( int argc, char **argv ){
    
    int v[][4] = { { 1 , 2 , 3 , 10 },
                   { 4 , 5 , 6 , 11 },
                   { 7 , 8 , 9 , 12 } };

    percorreDiagonalDireitaParaBaixo( 0, 1, 3, 4, v );
}

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

  • 0

Oi, consegui fazer a varredura nas diagonais '\'.

Agora preciso que me ajudem para fazer a varredura com as diagonais '/' se possível.

Segue o código que busca nas diagonais '\':

void busca_diagonal_inferior(char** matchar, char* busca_palavra, int m, int n){

int j,p,q;

char string[m+1];

int i =0;

for(j=0; j<n; j++){

for(p=j,q=0; p<m&&q<n; p++,q++){

string = matchar[p][q];

i++;

//printf("%c",matchar[p][q]);

}

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

A lógica é a mesma, só o que vai mudar é são as condições de parada:

Por exemplo: a condição para 'subir' na diagonal /, é linha >= 0 e coluna > colunaMax (decrementa a linha e incrementa a coluna).

para 'descer' é: coluna >= 0 e linha < linhaMax (decrementa a coluna e incrementa a linha)

Acho que é isso, dá uma tentada ae :)

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...