Ir ao conteúdo
  • Cadastre-se
Estudante0123

C Valores adjacentes em matriz

Posts recomendados

Ola, tenho uma matriz bidemensional, e quero saber quantos conjuntos de elementos adjacentes (em cima, baixo e lados) iguais a zero eu tenho nela. Exe

1 2 3 0 0 0

4 5 6 0 1 1

1 3 4 5 6 7

0 0 1 1 2 3

Nesse caso tenho dois conjuntos. Estou com dificuldades em pensar na funcao para fazer isso, pensei em faze la ler a matriz e quando encontrar um 0 entrar em uma condicao, mas não tenho muita mais nocao de como prosseguir

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite.

Como seu cérebro resolve esse problema? Faça a narrativa da solução sem o uso da linguagem. Caso isso ajude mostre sua primeira tentativa após a simulação mental do teu algoritmo para o teu programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode imprimir ela e ver onde ficou cada respectivo numero do vetor e depois comparalos ver se sao iguais. Alguns so vão levar 2 ou 3 comparacoes lado e embaixo sao os famosos numeros de cantos e os do meio vão ter maxima 4 comparacoes emcima embaixo e lados faria isso com alguns ifs else nao manjo tanto de for pra isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensei em fazer uma busca pela matriz, quando encontrar um 0 ir verificando aos lados ate quando tem o 0. Depois voltar e ao primeiro zero encontrado e ir verificando em baixo.

 if (m[i][j] == 0){  //encontrou um 0
                achou++;
            while ((j+1 < n_cols && m[i][j+1] == 0) || (i+1 < n_rows && m[i+1][j] == 0)){ //se houver 0 adjacente

                    while (m[i][j+1] == 0 && j+1 < n_rows){ //verificando 0 ao lado
                        achou ++;
                        printf ("Primerio while m[%d] [%d]\n", i, j);
                        i++;
                        int aux_j = j;
                        while (aux_j < n_cols && m[i][aux_j ] == 0) {
                        achou ++;
                        printf ("Segundo while m[%d] [%d]\n", i, aux_j);
                        aux_j++;

                    } //while

                    } //while


            } // while 1 adjacente
        } //if encontrou 1

Mas essa linha ainda tem muitos furos. Um esboço do que consegui, onde os printfs são apenas para me localizar. Nesse caso, estou tentando primeiro fazer a logica de reconhecer os conjuntos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...