Ir ao conteúdo

Posts recomendados

Postado

Olá eu preciso ordenar uma matriz em "c" de modo que comece do maior para o menor.

 

no caso seria ordenado o "0" todos os números que preenche o "i" do  [0, i]. Os números após o "0", do primeiro número da matriz , não seriam ordenados e iriam até "2". Os números referentes ao segundo número da matriz seriam recolocados sem quebrar a ordem de inserção seguindo os números ordenados.

 

Por Exemplo:

matrix[0, 1] = 100; 



matrix[0, 2] = 70;



matrix[0, 3] = 300; 



matrix[1, 1] = 12;



matrix[1, 2] = 14;



matrix[1, 3] = 17;



matrix[2, 1] = 19



matrix[2, 2]  = 17



matrix[2, 3]  = 15



// código de ordenação seria mostrado



300

  17

  15



100 

  12

  19  



  70

  14

  17

// os números  do primeiro zero, da primeira casa, seriam ordenados. E o segundo número seguiria os outros segundos números iguais respeitando a ordem de inserção. Assim seriam recolocados sem quebrar a ordem de inserção.

Postado

@Malyster    entendi ,  que você Quer mesmo é ordenar os números da primeira linha e que são os mesmos números das primeiras posições de cada coluna ,   que seria assim 

matrix[0, 1] = 100;   linha 1 --> |  0 | 12  | 14 | 17  |
matrix[0, 2] = 70;    linha 2 --> |  0 | 19  | 17 | 15  |
matrix[0, 3] = 300;               -----------------------
matrix[1, 1] = 12;                   0    1    2    3
matrix[1, 2] = 14;                               
matrix[1, 3] = 17;                   a    a    a    a
matrix[2, 1] = 19                    n    n    n    n
matrix[2, 2]  = 17                   u    u    u    u 
matrix[2, 3]  = 15                   l    l    l    l
                                     o    o    o    o
                                     c    c    c    c

e você quer que o resultado seja assim  :

 // código de ordenação seria mostrado
300                                 ______________________
  17                   linha 0 --> |  0 | 300 | 100 | 70  |
  15                   linha 1 --> |  0 | 17  | 12  | 14  |
100                    linha 2 --> |  0 | 15  | 19  | 17  |
  12                               ------------------------
  19                                  0    1    2    3
70                                                
  14                                  a    a    a    a
  17                                  n    n    n    n
                                      u    u    u    u 
                                      l    l    l    l
                                      o    o    o    o
                                      c    c    c    c

e como você pode ver ali tem uma coluna sobrando , que é a coluna zero , pois na linguagem c as matrizes e vetores começam em zero ,

e sendo assim , basta que você faça a ordenação decrescente do vetor formado pelos números da primeira linha e modificando os números das linhas de baixo ao mesmo tempo em que move os números maiores para a esquerda .   e para essa ordenação você pode usar um método de ordenação de vetores como o BubbleSort , ou um outro Qualquer como esse AncoraSort aqui :

int j.i;
for(i=0; i<3; i++)
    for(j=i+1; j<3; j++)
        if(vet[i] < vet[j])
        {
             aux    = vet[i];
             vet[i] = vet[j];
             vet[j] =    aux;
        }

 

  • Curtir 1
Postado

@Malyster É como @devair1010 comentou, você pode usar um algoritmo de ordenação para comparar os elementos da primeira linha. E em vez de apenas trocar um elemento por vez, como no caso vetor, terá que fazer mais um loop para pegar cada linha, p.ex,

if(matriz[0][j] < matriz[0][j + 1]){
    for(int k = 0; k < 3; k += 1){
        int aux = matriz[k][j];
        matriz[k][j] = matriz[k][j + 1];
        matriz[k][j + 1] = aux;
    }
}

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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