Ir ao conteúdo

Posts recomendados

Postado

Pessoal, Bom dia !

Seguinte, tenho uma matriz e preciso ordena-la em mais de um elemento POR LINHA dela :

1º Ordenar a coluna 4.

2º Ordenar coluna 3 dentre as linha que tenham o mesmo valor na coluna 4

3º Ordenar coluna 2 dentre as linha que tenham o mesmo valor na coluna 4 e coluna 3

4º Ordenar coluna 1 dentre as linha que tenham o mesmo valor na coluna 4 e coluna 3 e coluna 2

 

LIN   1      2      3      4

 1   24      2      0      0
 2   21      1      0      0
 3   20      2      0      0
 4   18      3      0      0
 5   26      1      1      0
 6   25      2      0      0
 7   30      1      0      0
 8   28      2      1      0
 9   25      3      0      0
10   23      4      0      0
11   22      5      0      0


DEVE FICAR ASSIM :

LIN   1      2      3      4

 8   28      2      1      0
 5   26      1      1      0
11   22      5      0      0
10   23      4      0      0
 9   25      3      0      0
 4   18      3      0      0
 6   25      2      0      0
 1   24      2      0      0
 3   20      2      0      0
 7   30      1      0      0
 2   21      1      0      0

 

Meu código (em C) :

Este código funcionou para ordenar somente a 4 coluna :

//      ACERTOS[12][5] É A MATRIZ... A POSIÇÃO "0" CONTÉM O NUMERO DA LINHA

      for (II=1; II<=11; II++)
        {
         ORDEM_CRESC[II]=ACERTOS[II][0];  // Transferência dos índices das linhas
         }


   for (I=1; I<=10; I++)
     {
      for (II=I+1; II<=11; II++)
        {
         if (ACERTOS[4]<ACERTOS[II][4])
           {                               // Manejando somente os índices das linhas, pois os elementos não irão mudar de coluna
            AUX_X=ORDEM_CRESC[II];
            ORDEM_CRESC[II]=ORDEM_CRESC;
            ORDEM_CRESC=AUX_X;
            }
         }

 

Quando incluí a ordenação da coluna 3, não funcionou...

//      ACERTOS[12][5] É A MATRIZ... A POSIÇÃO "0" CONTÉM O NUMERO DA LINHA

      for (II=1; II<=11; II++)
        {
         ORDEM_CRESC[II]=ACERTOS[II][0];  // Transferência dos índices das linhas
         }


   for (I=1; I<=10; I++)
     {
      for (II=I+1; II<=11; II++)
        {
         if (ACERTOS[4]<ACERTOS[II][4])
           {                               // Manejando somente os índices das linhas, pois os elementos não irão mudar de coluna
            AUX_X=ORDEM_CRESC[II];
            ORDEM_CRESC[II]=ORDEM_CRESC;
            ORDEM_CRESC=AUX_X;
            }
         else
           {
            if (ACERTOS[4]==ACERTOS[II][4])
              {
               if (ACERTOS[3]<ACERTOS[II][3])
               AUX_X=ORDEM_CRESC[II];
               ORDEM_CRESC[II]=ORDEM_CRESC;
               ORDEM_CRESC=AUX_X;
               }
            }
         }

 

 

  • Curtir 1
Postado
Em ‎05‎/‎05‎/‎2017 às 10:51, Math.Pi disse:

Bom dia. Já conhece os métodos de ordenação?

 

Obs: ponha seu tópico na TAG de código.

 

você tá falando dos : Buble sort, Insert sort, Quick sort, Heap sort.... Conheço esses...

Visitante
Este tópico está impedido de receber novas respostas.

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...