Matriz Resolucao Do Grupo 3
//UNIFEI - Universidade Federal de Itajubá - Campus Itabira.
//Nome: Icaro Megale, Luciana Pagliuso e Ricardo Henrique de Souza.
//Curso: Engenharia de Controle e Automacao, Engenharia de Producao e Engenharia da Computacao.
//Turma: T3
 
//Exercicio: 4.
 
#include<iostream>
 
using namespace std;
 
int main ()
{
    system("color F0"); //Mudança de cor letra preta e fundo braco.
    system("Title .:Identificador de Numeros Repetidos:."); //Mudança do título.
 
    int mat[5][8], linha, coluna, cont = 0, cont2, repeticao, repetidos[40], aux = 0, contagem_aux = 0, elementos[40], cont_r = 0, qnt[40];
 
    cout << ".:PREENCHA UMA MATRIZ 5x8 COM NUMEROS INTEIROS:.\n\n";
    for (linha = 0; linha < 5; linha ++)
    {
        for (coluna = 0; coluna < 8; coluna ++)
        {
            cout << "Elemento " << linha + 1 << "-" << coluna + 1 << " = ";
            cin >> mat[linha][coluna]; //Inserção dos números pelo usuario.
            elementos[cont ++] = mat[linha][coluna]; //Transformação de matriz para um vetor, pois vetor e mais facil de trabalhar.
        }
    }
 
    for (cont = 0; cont < 40; cont ++) //O vetor possui 40 numeros pois, na matriz 5x8 = 40.
    {
        repeticao = 0;
        contagem_aux = 0;
        for (cont2 = 0; cont2 < 40; cont2 ++)
        {
            if (elementos[cont] == elementos[cont2]) //Verificar quantas vezes o numero se repete dentro de "elementos"."
                repeticao ++; 
        }
        if (repeticao > 1) //Verificar se o numero se repete duas ou mais vezes.
        {
            for (cont2 = 0; cont2 <= aux; cont2 ++) 
            {
                if (repetidos[cont2] != elementos[cont]) //Verificar quantos numeros no vetor repeticao e diferente ao elemento repetido.
                    contagem_aux ++; 
            }
        }
        if (contagem_aux == aux + 1)  //--------->Todos os numeros de vetor "repetidos[]", devera ser diferente do elemento vetor "elemento[]", 
        {                                       //nisso "contagem_aux" sera igual a quantidade de numeros dentro do vetor "repetidos[]".
            repetidos[aux] = elementos[cont];   //Sendo todos numeros diferentes, o numero de "elementos[]" sera colocado em "repetidos[]"
            qnt[aux++] = repeticao;             //e a variavel "aux", que a contagem de numeros dentro de "elementos[]", sera adicionada + 1.
        }                                       //Em seguinda a quantidade da repeticao desse numero e colocada dentro de "qnt[]".
    }
 
    cout << "\n\n.:RESULTADOS:.";
    if (aux != 0) 
    {
        for (cont = 0; cont < aux; cont ++)
             cout << "\n\nNumero Repetido: " << repetidos[cont]
                  << "\nVezes..........: " << qnt[cont];
    }
    else //Caso nao existam numeros repetidos.
        cout << "\n\nNao existem numeros repetidos nesse vetor.";
 
    system ("pause>0");
    return 0;
}

Comentários
 
A estética do programa é agradável, a impressões na tela permitem que qualquer usuário seja capaz de entender o que o está acontecendo.
 
Todos os testes deram certo, incluindo números positivos e negativos e com os mesmos números repetindo em posições diferentes.
 
Além de preencher a Matriz 5x8 manualmente..... Para facilitar os testes,  aplicou-se  a funçãorandou diminuíram-se as linhas e colunas da matriz e conseqüentemente os elementos do vetor.... e ainda sim todos os testes foram satisfatórios.
 
A idéia de transformar a matriz em um vetor realmente auxilia em transformar o programa conciso.
 
Os comentários de fato auxiliam no entendimento do que o que os programadores fizeram.
 
Bom código!
 
By.: Grupo 4.

Correção pela professora

  • Gostei muito da solução e da correção;
  • Segue a minha solução: ao mesmo tempo que o valor do elemento é gerado (deveria-se pedir ao usuário, pois foi pedido no enunciado), a matriz é impressa e gera-se um vetor com todos os elementos da matriz (sem repetição dos valores). Assim, numa segunda fase, para cada elemento do vetor verifica-se a quantidade de vezes que ele se repete na matriz. Se a quantidade de repetição for maior que 1, imprime-se e elemento repetido e sua quantidade.
// Solução da professora
#include<iomanip.h>
using namespace std;
 
const int MAX_LIN=5;
const int MAX_COL=8;
 
int main()
{
   int i, j, k, mat[MAX_LIN][MAX_COL], cont=0, vetor[MAX_LIN*MAX_COL], quant;
   bool repetido;   
 
   for(i=0;i<MAX_LIN;i++)
   {
      for (j=0;j<MAX_COL;j++)
      {
         mat[i][j] = rand()%10;
         cout << setw(4) << mat[i][j] << " ";
 
         repetido = false;
         for (k=0; k<cont && !repetido; k++)
            if (vetor[k] == mat[i][j])
               repetido = true;
 
         if (!repetido)
         {
            vetor[cont] = mat[i][j];
            cont++;
         }
      }
      cout << endl;
   }      
 
   for (k=0; k<cont; k++)
   {
      quant = 0;
      for (i=0; i<MAX_LIN; i++)
         for (j=0; j<MAX_COL; j++)
            if (vetor[k] == mat[i][j])
               quant++;
 
      if (quant > 1)
         cout << "\n" << vetor[k] << " se repete " << quant << " vezes!";
   }
   system("pause > 0");
   return 0;
}

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License