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ção “rand” ou 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; }
page revision: 4, last edited: 16 Jun 2010 17:57