Ir ao conteúdo
  • Cadastre-se

J. Vitor Correia.

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Bom dia á todos do Clube do Hardware. Sou iniciante na área de Programação em C++ e preciso da ajuda de vocês. Preciso elaborar o seguinte programa: Escreva um programa que carrega uma matriz de M x N lidos pelo teclado com numeros aleatorios compreendidos entre 1 e 400. Considere o produto M x N <= 300. Em seguida escreva um procedimento para carregar e imprimir o conteúdo da matriz Em seguida implemente os seguintes procedimentos tendo como parametro a matriz carregada: A ) Um procedimento para verificar e imprimir a quantidade de vezes que cada numero aparece na matriz; B ) Uma funcao que calcula a soma dos 2 menores numeros contidos na matriz. C ) Uma funcao que calcula a diferenca entre os dois maiores numeros contidos nos vetores (Primeiro Maior - Segundo Maior). D ) Um metodo que imprima o numero que mais se aproxima da media dos elementos da matriz, informando sua posicao. Bem, já fiz boa parte do programa, mais exatamente dos itens A até o C e acabei me enrolando no D. E preciso da ajuda de vocês na resolução dele, pois o mesmo é de suma importância para mim. Segue o código: #include <time.h>#include <iostream>#include <cstdlib>#include <stdlib.h>#include <stdio.h>using namespace std;int linhas, colunas;int numlinhas, numcolunas, limite;int matriz[100][100];int menor = 400;int menor2 = 400;int maior = 0;int maior2 = 0;float media = 0;int numaproximado = 400;int numdamatriz;int aleatorio;int numerosaleatorios[1000];// FUNÇÃO QUE CARREGA (INSERE VALORES ALEATÓRIOS POR MEIO DO SRAND) A MATRIZ.void carrega(){ srand(time(NULL)); for (linhas=0; linhas<numlinhas; linhas++){ for (colunas=0; colunas<numcolunas; colunas++){ aleatorio = matriz[linhas][colunas] = rand()%400+1; numerosaleatorios[aleatorio] += 1; } }}// FUNÇÃO QUE IMPRIME A MATRIZ.void imprime(){ for (linhas=0; linhas<numlinhas; linhas++){ for (colunas=0; colunas<numcolunas; colunas++){ printf("%5d", matriz[linhas][colunas]); }cout<<"\n";cout<<"\n"; }}// FUNÇÃO QUE VERIFICA A QUANTIDADE DE VEZES QUE O NÚMERO É REPETIDO.void imprimeqtdvezes(){ cout<<"ITEM A:"<< endl; for (int i = 0; i <= 400; i++){ if(numerosaleatorios[i] != 0){ cout << "O numero " << i << " foi repetido " << numerosaleatorios[i] << " vez(es)." << endl; } }}// VERIFICA O MENOR NÚMERO.void menornumero(){ cout << "\n";cout << "ITEM B:" << endl; for(int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ if (matriz[linhas][colunas]<menor){ menor=matriz[linhas][colunas]; } } }}// DEPOIS DO MENOR NÚMERO DEFINIDO, É DEFINIDO O SEGUNDO MENOR NÚMERO.void calculasoma2menores(){ menornumero(); for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ if (matriz[linhas][colunas]>menor && matriz[linhas][colunas]<menor2){ menor2=matriz[linhas][colunas]; } } } }// VERIFICA O MAIOR NÚMERO.void maiornumero(){cout << "ITEM C:" << endl; for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ if (matriz[linhas][colunas]>maior){ maior=matriz[linhas][colunas]; } } }}// DEPOIS DO MAIOR NÚMERO DEFINIDO, É DEFINIDO O SEGUNDO MAIOR NÚMERO.void calculadiferenca2maiores(){ maiornumero(); for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ if (matriz[linhas][colunas]<maior && matriz[linhas][colunas]>maior2){ maior2=matriz[linhas][colunas]; } } }}// FUNÇÃO QUE TIRA A MÉDIA E DIZ QUAL O NÚMERO DA MATRIZ MAIS SE APROXIMA DA MESMA.void tirarmedia(){ cout << "\n";float total = 0; for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){total = total + matriz[linhas][colunas]; }media = total/(numlinhas*numcolunas); } for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ if (matriz[linhas][colunas] < media){ numdamatriz = media - matriz[linhas][colunas]; }else{ numdamatriz = matriz[linhas][colunas] - media; } matriz[linhas][colunas] = numdamatriz; } } } int main(){// ÍNICIO DO MÉTODO MAIN.cout << "=========================== ATIVIDADE GRUPO VX - Matriz M x N - JOAO VITOR CORREIA E GABRIEL SOUZA ===========================" << endl << endl;cout << "Escreva um programa que carrega uma matriz de M x N lidos pelo teclado com numeros aleatorios compreendidos entre 1 e 400." << endl; cout << "Considere o produto M x N <= 300. Em seguida escreva um procedimento para carregar e imprimir o conteúdo da matriz." << endl;cout << "Em seguida implemente os seguintes procedimentos tendo como parametro a matriz carregada:" << endl << endl;cout << "A) Um procedimento para verificar e imprimir a quantidade de vezes que cada numero aparece na matriz; " << endl; cout << "B) Uma funcao que calcula a soma dos 2 menores numeros contidos na matriz." << endl;cout << "C) Uma funcao que calcula a diferenca entre os dois maiores numeros contidos nos vetores (Primeiro Maior - Segundo Maior)." << endl;cout << "D) Um metodo que imprima o numero que mais se aproxima da media dos elementos da matriz, informando sua posicao." << endl << endl;cout << "==============================================================================================================================" << endl << endl;while (1){cout << "Numero de linhas: ";cin >> numlinhas;cout << "Numero de colunas: ";cin >> numcolunas;if (numlinhas * numcolunas <= 300){//cout << "Limite de numeros aleatorios: ";//cin >> limite;cout << "\n";carrega();imprime();imprimeqtdvezes();calculasoma2menores();cout << menor << " é o menor numero, " << menor2 << " é o segundo menor numero.\n"; cout << "O resultado da soma dos dois menores numeros é: " << menor+menor2;cout<<"\n";cout<<"\n";calculadiferenca2maiores();cout << maior << " é o maior numero, " << maior2 << " é o segundo maior numero.\n"; cout << "O resultado da diferenca dos dois maiores numeros é: " << maior-maior2; cout<<"\n";cout<<"\n";tirarmedia();cout<<"A media da matriz é: "<<media << endl;cout << "O num da matriz que mais se aproxima é: " << numdamatriz;break; }else{cout << "\n";cout << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>> INSIRA VALORES VALIDOS : (Num. de Linhas * Num. de Colunas <= 300) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << endl << endl; } }} Aguardo respostas o mais breve possível, abraços !
  2. Boa tarde pessoal do Clube do Hardware, Sou iniciante na área de programação em C e estou com uma atividade da faculdade pra resolver com o assunto matriz. Abaixo segue o enunciado da questão: Escreva um programa que carrega uma matriz de M x N lidos pelo teclado com números aleatórios compreendidos entre 1 e 400. Considere o produto M x N <= 300. Em seguida escreva um procedimento para carregar e imprimir o conteúdo da matriz. Em seguida implemente os seguintes procedimentos tendo como parâmetro a matriz carregada: A ) Um procedimento para verificar e imprimir a quantidade de vezes que cada número aparece na matriz; Os números que não aparecem, não devem ser impresso com quantidade zero. B ) Uma função que calcula a soma dos 2 menores números contidos na matriz. C ) Uma função que calcula a diferença entre os dois maiores números contidos nos vetores (Primeiro Maior - Segundo Maior). D ) Um método que imprima o número que mais se aproxima da média dos elementos da matriz, informando sua posição. Até o momento, desenvolvi esse código, porém fiz apenas um void para carregar e exibir a matriz, sendo que preciso separar cada função em seu devido lugar. Alguém me ajuda, por favor ! #include <iostream>#include <time.h>#include <cstdlib>#include <stdlib.h>#include <stdio.h>using namespace std;int linhas, colunas;int numlinhas, numcolunas, limite; void carrega_e_imprime(){ srand(time(NULL)); int matriz[numlinhas][numcolunas]; for (linhas=0; linhas<numlinhas; linhas++){ for (colunas=0; colunas<numcolunas; colunas++){ matriz[linhas][colunas] = rand()%limite+1; printf("%5d", matriz[linhas][colunas]); } cout<<"\n"; }} int main(){ cout<<"Numero de linhas: "; cin>>numlinhas; cout<<"Numero de colunas: "; cin>>numcolunas; cout<<"Limite de numeros aleatorios: "; cin>>limite; carrega_e_imprime(); } Fiz umas mudanças no código e obtive êxito, porém acho que minha condição no segundo maior e segundo menor não estão corretas e eu queria que alguém analisar-se o que eu poderia fazer para executar o item A e D, segue o código: #include <iostream>#include <time.h>#include <cstdlib>#include <stdlib.h>#include <stdio.h>using namespace std;int linhas, colunas;int numlinhas, numcolunas, limite;int matriz[100][100];int menor=400;int menor2=menor;int maior=0;int maior2=maior;int contador = 0;float media = 0; void carrega(){ srand(time(NULL)); for (linhas=0; linhas<numlinhas; linhas++){ for (colunas=0; colunas<numcolunas; colunas++){ matriz[linhas][colunas] = rand()%limite+1; } }} void imprime(){ for (linhas=0; linhas<numlinhas; linhas++){ for (colunas=0; colunas<numcolunas; colunas++){ printf("%5d", matriz[linhas][colunas]); } cout<<"\n"; }} void menornumero(){ for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ if (matriz[linhas][colunas]<menor){ menor=matriz[linhas][colunas]; } if (matriz[linhas][colunas]>menor && matriz[linhas][colunas]<menor2){ menor2=matriz[linhas][colunas]; } } } } void maiornumero(){ for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ if (matriz[linhas][colunas]>=maior){ maior=matriz[linhas][colunas]; } if (matriz[linhas][colunas]<maior && matriz[linhas][colunas]>maior2){ maior2=matriz[linhas][colunas]; } } }} void tirarmedia(){ float total = 0; for (int linhas=0; linhas<numlinhas; linhas++){ for (int colunas=0; colunas<numcolunas; colunas++){ total = total + matriz[linhas][colunas]; } media = total/(numlinhas*numcolunas); }} int main(){ cout<<"Numero de linhas: "; cin>>numlinhas; cout<<"Numero de colunas: "; cin>>numcolunas; cout<<"Limite de numeros aleatorios: "; cin>>limite;carrega();imprime();menornumero();cout<<"\n";cout<<menor<<" eh o menor numero, "<<menor2<< " eh o segundo menor numero.\n"; cout<<"O resultado da soma dos dois menores numeros eh: "<< menor+menor2; maiornumero();cout<<"\n"; cout<<maior<<" eh o maior numero, "<<maior2<< " eh o segundo maior numero.\n"; cout<<"O resultado da diferenca dos dois maiores numeros eh: "<< maior-maior2; tirarmedia(); cout<<"\n"; cout<<"A media da matriz eh: "<<media; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!