†™MenoR¥RoX™† Postado Agosto 8, 2008 Denunciar Share Postado Agosto 8, 2008 Boa Tarde Galera,Estou com um exercicio pra fazer e nele eu preciso fazer uma matriz 6,6 e criar um vetor de 10 posiçoes com os 10 maiores valores da matriz...já fiz esse erxercicio com vetores mas com matriz já pensei em varias logicas mas não consigo...conto com vocês..att,Marcelo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 C/C++ nuts Postado Agosto 12, 2008 Denunciar Share Postado Agosto 12, 2008 Dá mais trabalho sem a matriz ordenada.Mas quando for colocar um valor no array,verifique se ele não esta la. Se não estiver e o array tem posicoes vazia,coloque sequencialmente até preencher o array. Depois ordene (vai ficar mais facil).#include <stdio.h> #include <string.h> #include <stdlib.h> int in(int V[],int E) { int j; for(j=0;j<10 && V[j] != 0;j++) if(V[j] == E) return -1; return j; } int comparacao(int A,int B) { if (A<B) return -1; if (A==B) return 0; if (A>B) return 1; } int busca(int V[],int E) { int i=0; while(i<10 && E > V[i]) i++; return i-1; } int main() { int maiores[10]; memset(&maiores,0,sizeof(maiores)); int matriz[6][6] = { {3,-12,34,76,93,-8}, {6,3,71,23,8,98}, {10,29,-45,-12,3,1}, {1,67,9,4,-12,-45}, {-17,-45,-29,90,10,38}, {-90,-57,-92,192,395,19}}; int i; int pos; int (*pf)(int,int) = &comparacao; for(i=0;i<36;i++) { if (i<10) { pos = in(maiores,matriz[0][i]); if (pos > -1) maiores[pos] = matriz[0][i]; } else { qsort(&maiores,10,sizeof(int),pf); pos = busca(maiores,matriz[0][i]); if (pos > - 1) maiores[pos] = matriz[0][i]; } } }Só o ponteiro p/ funcao que tá dando errado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 hyeNna Postado Agosto 15, 2008 Denunciar Share Postado Agosto 15, 2008 ordena exatamente como você quer, dentro da matriz!a parte de passar os 10 maiores para o vetor é super facilse não souber, responda, que eu ponho aqui!só uma observaçaoeu não sei qual seria a condiçao de parada no whileeu coloquei pra ele contar 45 vezesque nesse caso, em especial, de uma matriz [6][6]ta sendo suficiente para ele se ordenarmais se fosse uma matriz maiorprecisaria de mais interaçoestente descobri isso ae#include<stdio.h>#include<stdlib.h>#define L 6#define C 6main(){ int linha, coluna, maior, aux, ctrl;int vetor[L*C];int seg_linha1, seg_coluna1, ctrl_linha1, ctrl_coluna1, ctrl_ind1, ctrl_ind2; int matriz[L][C] = { {7,3,8,16,1,5},{2,4,6,12,13,10},{15,14,11,9,20,36}, {25,26,21,22,24,23},{29,27,28,32,33,34},{35,31,30,19,17,18} }; ctrl_linha1 = 0; ctrl_coluna1 = 0; while( ctrl != 45){ maior = 0; ctrl_ind1 = ctrl_linha1; ctrl_ind2 = ctrl_coluna1; for( linha = ctrl_ind1; linha < L; linha++ ){ for( coluna = ctrl_ind2; coluna < C; coluna++ ){ if( matriz[linha][coluna] >= maior ){ maior = matriz[linha][coluna]; seg_linha1 = linha; seg_coluna1 = coluna; } ctrl_ind2++; } ctrl_ind1++; ctrl_ind2 = 0; } if( ( ctrl_linha1 != seg_linha1 ) || ( ctrl_coluna1 != seg_coluna1 ) ){ aux = matriz[ctrl_linha1][ctrl_coluna1]; matriz[ctrl_linha1][ctrl_coluna1] = maior; matriz[seg_linha1][seg_coluna1] = aux; } ctrl_coluna1++; if(ctrl_coluna1 == C){ ctrl_linha1++; ctrl_coluna1 = 0; } if( ctrl_linha1 == L ) ctrl_linha1 = 0; ctrl++; } for( linha = 0; linha < L; linha++ ){ printf("\n"); for( coluna = 0; coluna < C; coluna++ ){ printf("%d", matriz[linha][coluna]); printf("|"); }} fflush(stdin); getchar(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
†™MenoR¥RoX™†
Boa Tarde Galera,
Estou com um exercicio pra fazer e nele eu preciso fazer uma matriz 6,6 e criar um vetor de 10 posiçoes com os 10 maiores valores da matriz...
já fiz esse erxercicio com vetores mas com matriz já pensei em varias logicas mas não consigo...
conto com vocês..
att,
Marcelo
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.