Jump to content
Sign in to follow this  
m90mine

Ordenar vector em decrescente

Recommended Posts

m90mine

Boas fiz este programa para ordenar numeros de forma crescente mas eu queria que ficasse de forma decrecente mas não consigo o que tenho de alterar para que o programa fique direito?

#include <stdio.h>
#include <stdlib.h>

main(){
       
       int vector[4]={10,3,15,50}; 
   
       
       
       int i,y,vect;
       
       int x=4;
       
       
       
       
       
       printf("VECTOR POR ORDENAR\n\n\n");
        
         
       for(i=0;i<x;i++)
       printf("Posicao %d = %d\n",i,vector[i]);
          
   ////////////////////////////////////////////////////////////7
       x--; 
       for(i=0;i<x;i++)              
       for(y=0;y<i;y++)
       
       if(vector[y]>vector[y+1]){
       vect + =vector[y] +;       
       vector[y]=vector[y+1];
       vector[y+1]=vect;
       }
      
      printf("VECTOR ORDENADO\n\n\n");
        
       
                          
      for(i=0;i<=x;i++)
      
      printf("Posicao %d = %d\n",i,vector[i]);
      printf("\n\n");
   

       system("pause");
       
       }

Share this post


Link to post
Share on other sites
KTachyon

Trocas os sinal:

if(vector[y]<vector[y+1]){


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
m90mine

ok obrigado

O meu programa nao esta a fazer as mudanças certas poderá ser no ciclo if?

Share this post


Link to post
Share on other sites
KTachyon

Lol. Não era exactamente essa a correcção...

If é uma condição, não é um ciclo.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
m90mine

:wallbash: sinceramente a cada dia que passa perceo cada vez menos de programação

Share this post


Link to post
Share on other sites
KTachyon

If = se

if (x == 0)

Se x é igual a 0...

Não tens nenhuma repetição aqui, logo não é um ciclo.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
m90mine

Eu fiz isto com o meu novo livro mas la so tem por ordem crescente e queria fazer por ordem decrescente

Share this post


Link to post
Share on other sites
KTachyon

Pah, é como te disse, só tens que trocar o sinal. Nem faz sentido que seja de outra forma.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
m90mine

Eu ja troquei o sinal mas á valores que nao estão a fazer a troca devida que em crescente fazem e em decrescente nao fazem

alguma ideia daquilo que podera estar mal no código=?

#include <stdio.h>
#include <stdlib.h>

main(){
       
       int vector[4]={10,3,15,50}; 
   
       
       
       int i,y,vect;
       
       int x=4;
       
       
       
       
       
       printf("VECTOR POR ORDENAR\n\n\n");
        
         
       for(i=0;i<x;i++)
       printf("Posicao %d = %d\n",i,vector[i]);
          
   ////////////////////////////////////////////////////////////7
       x--; 
       for(i=0;i<x;i++)              
       for(y=0;y<i;y++)
       
       if(vector[y]<vector[y+1]){
       vect=vector[y];       
       vector[y]=vector[y+1];
       vector[y+1]=vect;
       }
      
      printf("VECTOR ORDENADO\n\n\n");
        
       
                          
      for(i=0;i<=x;i++)
      
      printf("Posicao %d = %d\n",i,vector[i]);
      printf("\n\n");
   

       system("pause");
       
       }

Share this post


Link to post
Share on other sites
Localhost

Tu estás a seguir um livro? A ideia não é "seguires" o livro, a ideia é mesmo perceberes aquilo que está nele. Para ti não faz sentido que em vez de > seja <? Percebes aquilo que estás a escrever? Em vez de tantas dificuldades e problemas, já pensaste que se calhar não estás na tua, digamos, vocação? :/


here since 2009

Share this post


Link to post
Share on other sites
KTachyon

Isso só funcionava para ordenar por ordem crescente por puro acaso, porque o código está mal. O segundo ciclo tem que percorrer todas as casas, ou seja, até x e não até i:

for(y=0;y<x;y++)


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
aladino77

#include <stdio.h>

#include <stdlib.h>

int compare (const void * a, const void * :)

{

  return ( *(int*)b - *(int*)a );

}

main(){

     

      int vector[4]={10,3,15,50};

      qsort(vector, 4, sizeof(int), compare);

}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.