How to compare elements of the same matrix

Asked

Viewed 89 times

-1

I am trying to solve an exercise involving the comparison of values of a matrix, ie if there are repeated elements, for example: the matrix 2x2 has the element A that repeats N times. Could someone tell me how I could make that comparison? Thanks in advance!

void verificaRepeticao()
{
    int i,j,p,q;
    int cont=0;
    
    for (i = 0;i < n;i++)//n e m é a quantidade de linhas e colunas informada pelo usuário em outra função
    {
      for (j = 0;j < m;j++)
      {
        for (p=0;p<n;p++)
        {
          for (q=0;q<m;q++)
          {
            if (matriz[p][q] == matriz[i][j])
            {
              vetor[cont] += 1;
            }
           
          }
          
        }
        
      }
      cont++;
    }
  
}

1 answer

0


I have made a small example for you. Please check if you answer the desired one before giving Down Vote. I can better answer to meet your need.

In the example below, I only use the trick of porting the matrix as if it were a single-dimensional array. To make the comparison, we nest 2 cycles in which the inner cycle runs from the position in which we are in the outer cycle to the end of the array.

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

    #define colunas_matriz 3 
    #define linhas_matriz 3 




    int main()
    {
        //Declarar as matriz
        int matriz_origem[linhas_matriz][colunas_matriz];


        //Preencher matriz origem
        for(int i=0; i < linhas_matriz; i++)
        {
            for(int n=0; n < colunas_matriz; n++)
            {
                matriz_origem[i][n] = i+n;
            }
        
        }


        //Mostrar a matriz origem preenchida
        for(int i=0; i < linhas_matriz; i++)
        {
            for(int n=0; n < colunas_matriz; n++)
            {
                printf("%d ", matriz_origem[i][n]);
            }
            printf("\n");
        }


        printf("\n");


        //percorrer matriz
        int totalposicoes = colunas_matriz * linhas_matriz; 
        
        for (int i = 0; i< totalposicoes; i++)
        {
            //printf("%d ", matriz_origem[0][i]);
            for(int n = i+1; n<totalposicoes; n++)
            {
                if(matriz_origem[0][i] == matriz_origem[0][n])
                {
                    printf("Elemento %d repetido nas posicoes %d e %d\n", matriz_origem[0][i], i, n);               
                    break; 
                }
           
            }
        }
    }


OUTPUT
0 1 2 
1 2 3 
2 3 4 
    
    Elemento 1 repetido nas posicoes 1 e 3
    Elemento 2 repetido nas posicoes 2 e 4
    Elemento 2 repetido nas posicoes 4 e 6
    Elemento 3 repetido nas posicoes 5 e 7

Browser other questions tagged

You are not signed in. Login or sign up in order to post.