Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida em ordenação de matriz


†™MenoR¥RoX™†

Pergunta

2 respostass a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

ordena exatamente como você quer, dentro da matriz!

a parte de passar os 10 maiores para o vetor é super facil

se não souber, responda, que eu ponho aqui!

só uma observaçao

eu não sei qual seria a condiçao de parada no while

eu coloquei pra ele contar 45 vezes

que nesse caso, em especial, de uma matriz [6][6]

ta sendo suficiente para ele se ordenar

mais se fosse uma matriz maior

precisaria de mais interaçoes

tente descobri isso ae

#include<stdio.h>

#include<stdlib.h>

#define L 6

#define C 6

main(){

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();

}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...