terça-feira, 2 de agosto de 2016

Faça um programa que leia uma matriz de 4x5 de inteiros. Imprimir o número de ocorrências de cada elemento na matriz.

/* Faça um programa que leia uma matriz de 4x5 de inteiros. Imprimir o número de
ocorrências de cada elemento na matriz.*/

#include <stdio.h>
#define NL 2
#define NC 3

int main(){
   int mat[NL][NC],lin,col,i,k,achou,ocorrencias,
       ve[NL*NC],/*armazena os elementos distintos  da matriz, aqueles que já foram contados*/
       ultima_pos=-1;/*armazena a última posição preenchida do vetor ve*/

    /*lendo a matriz*/
   for(lin=0;lin<NL;lin++)
   for (col=0;col<NC;col++){
      printf("\n[%d][%d]:",lin,col);
      scanf("%d",&mat[lin][col]);
   }

   for(lin=0;lin<NL;lin++)
     for(col=0;col<NC;col++){
       /*verificando se o elemento corrente da matriz já foi processado. Verificar se ele está
       presente no vetor ve*/
       i=0;
       achou=0;
      while(i<ultima_pos && achou==0)
         if(mat[lin][col]==ve[i])
           achou =1;
         else
           i++;
      /*caso o elemento pertença a ve (achou terá o valor 1) não preciso contá-lo novamente*/
      if(achou==0){
         ultima_pos++;
         ve[ultima_pos]=mat[lin][col];
         /*percorrer a matriz apenas a partir da linha correente. As posições acima da linha
         corrente já foram processadas*/
         ocorrencias =0;
         for(i=lin;i<NL;i++)
            for(k=0;k<NC;k++)
               if(mat[lin][col]==mat[i][k])
                 ocorrencias++;
         printf("\nO elemento %d aparece %d vezes",mat[lin][col],ocorrencias);
      }
   }
}



Nenhum comentário:

Postar um comentário