caaaike 0 Denunciar post Postado Junho 1, 2015 Escreva um programa que carrega uma matriz de M x N com M e 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: Um procedimento para verificar e imprimir a quantidade de vezes que cada numero aparece na matriz; os números que não aprecem não devem ser impresso com quantidade zero Uma função que calcula a soma dos 2 menores números contidos na matriz; Uma função que calcula a diferença entre os dois maiores números contidos nos vetores (1o maior – 2o maior) Um metodo que imprima o numero que mais se aproxima da media dos elementos da matriz, informando sua posição na matriz Bom, o professor deu a biblioteca e mandou fazer isso. To com duvida, sei a ideia mais ou menos de como fazer, mas ja tentei algumas coisas e da erro. #include <iostream> #include <cstdlib> #include <time.h> #include "bibliotecaMatriz.h" void vezes(int m[][tam],int l, int coluna,int menor, int maior); int main(){ srand(time(NULL)); const int linhas = 1000; int m[linhas][tam], linha, coluna, menor, maior; cout<<"Quantas linhas tem a matriz: "; cin>>linha; cout<<"Quantas colunas tem sua matriz: "; cin>>coluna; cout<<"Qual o menor numero da matriz: "; cin>>menor; cout<<"Qual o maior numero da matriz: "; cin>>maior; carrega_com_repeticao(m,linha,coluna,menor,maior); vezes(m,linha,coluna,menor,maior); } void vezes(int m[][tam],int linha, int coluna,int menor, int maior){ for (int k = menor; k<=maior; k++){ int conta = 0; for (int i = 0; i<linha; i++) for (int j = 0; j<coluna; j++) if (m[i][j] == k) conta++; if (conta>2) cout<<"numero "<<k<<" aparece "<<conta<<" vezes\n"; } } biblioteca, #include<iostream> using namespace std; const int tam=50; //prototipos: void imprimematriz(int [][tam],int, int); void ordenamatriz(int [][tam],int,int); void carrega_com_repeticao(int [][tam],int,int,int,int); void carrega_sem_repetir(int [][tam],int,int,int,int); void pesquisa(int [][tam],int,int,int); bool existe1(int [][tam],int,int,int,int,int); //codigos dos prototipos //imprime matriz[x][tam] void imprimematriz(int f[][tam],int x, int y){ for (int i=0;i<x;i++){ if (i+1<10) //mostra o numero da linha alinhando pela direita cout<<" "<<i+1<<" - "; else if(i+1<100) cout<<" "<<i+1<<" - "; else if(i+1<1000) cout<<" "<<i+1<<" - "; else cout<<i+1<<" - "; for (int j=0;j<y;j++) if(f[i][j]<10) cout<<' '<<f[i][j]<<' '; else cout<<f[i][j]<<" "; cout<<'\n'; } } //ordena linhas da matriz[lin][col] void ordenamatriz(int x[][tam],int lin,int col){ int aux; for(int k=0; k<lin;k++) for (int i=0;i<col-1;i++) for (int j=i+1;j<col;j++) if (x[k][j]<x[k][i]){ aux=x[k][i]; x[k][i]=x[k][j]; x[k][j]=aux; } } //carrega a matriz[lin][col] com repetição na linha com valores de minimo ate maximo void carrega_com_repeticao(int x[][tam],int lin,int col, int minimo,int maximo){ int raiz=maximo-minimo+1; for (int i=0;i<lin;i++) for (int j=0;j<col;j++) x[i][j]=rand()%raiz+minimo;//NUMEROS ENTRE minimo e maximo ordenamatriz(x,lin,col); imprimematriz(x,lin, col); } //carrega a matriz sem repetir na linha com valores entre minimo e maximo void carrega_sem_repetir(int v[][tam],int l, int c, int minimo, int maximo){ int raiz=maximo-minimo+1; for(int i=0;i<l;i++){ v[i][0]=rand()%raiz+minimo; for(int j=1;j<c; j++){ v[i][j]=rand()%raiz+minimo; if (existe1(v,l,c,i,j,v[i][j])) j--; } } ordenamatriz(v,l,c); imprimematriz(v,l,c); } //pesquisa as linha da matriz[lin][col] que contem o numero num void pesquisa(int x[][tam],int lin,int col, int num){ for (int i=0;i<lin;i++) for (int j=0;j<col;j++) if(x[i][j]==num)//mostra as linhas que contem o numero num cout<<num<<" esta na posicao "<<j+1<<" da linha "<<i+1<<"\n"; } bool existe1(int x[][tam],int lin,int col,int linha, int coluna,int num){ for (int k=0;k<coluna;k++) if(x[linha][k]==num)//linha i coluna j=num return 1; return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 10, 2015 mas ja tentei algumas coisas e da erro O que acontece? Qual erro dá? O que o compilador diz? Compartilhar este post Link para o post Compartilhar em outros sites
caaaike 0 Denunciar post Postado Junho 11, 2015 O que acontece? Qual erro dá? O que o compilador diz? consegui fazer umas coisa, como que faço pra descobrir os 2 menores numeros? pra descobrir o menor.. int minimo(int m[][tam],int linha, int coluna){ int menor=m[0][0]; for(int i=0;i<linha;i++) for(int j=0;j<coluna;j++){ if(menor>m[j]) menor = m[j]; } return menor; } e o segundo menor? Compartilhar este post Link para o post Compartilhar em outros sites
wmarcelo 0 Denunciar post Postado Junho 23, 2015 declare a variável int m[linhas][tam]; depois de vc obter os valores das variáveis, linha coluna, algumas vezes ele trava por causa da locação de memoria. algumas vezes vc tentar alocar memoria sem passar o tamanho que precisa pode travar a execução do programa. Compartilhar este post Link para o post Compartilhar em outros sites