Ir ao conteúdo
  • Cadastre-se

Ordem decrescente em c


Lucas532

Posts recomendados

Estou com um exercício em que preciso ler n valores que o usuário informa e apos isso exibi-los em ordem decrescente , mas não consigo fazer isso, eu só consigo achar o maior valor deles mas após isso não sei o que fazer... aqui está o código até agora:

 

void listar_por_calorias(int num_receitas,struct dados_da_receita receita[])
{
    int i;
    int posmc = 0;

    for(i=0;i<=num_receitas;i++)
    {
        if(receita[ i ].calorias > receita[posmc].calorias)
            posmc = i;
    }

    printf("\n------Receita %d------\n",posmc+1);
    printf("Nome da receita: %s\n",receita[posmc].nome);
    printf("Doce ou Salgada: %s\n",receita[posmc].ds);
    printf("Quantidade de calorias por porcao: %d\n",receita[posmc].calorias);
    printf("Tipo: %s\n",receita[posmc].tipo);
    printf("Modo de preparo: %s\n",receita[posmc].preparo);
}

Link para o comentário
Compartilhar em outros sites

Fácil, faz assim:

 

1->Cria uma variável auxiliar do mesmo tipo de calorias, tipo aux;

2->Dentro do loop você faz assim:

    2.1->Poe um outro loop idêntico usando uma outra variável como o i, tipo j;

    2.2->Dentro desse loop depois do if já posto poe assim:

        2.2.1->if(receita[ i ].calorias >= receita[j].calorias){

                       aux = receita[ i ].calorias;

                       receita[ i ].calorias = receita[ j ].calorias;

                       receita[ j ].calorias = aux;

                   }

 

Fazendo assim você consegue organizar esse vetor receita. Caso a ordem esteja errada mude o >= para < ou <=.

 

Bom estudo.

 

Código mudado:

void listar_por_calorias(int num_receitas,struct dados_da_receita receita[]){
    int i, j, aux;
    int posmc = 0;
    for(i=0;i<num_receitas;i++)
    {
        if(receita[ i ].calorias > receita[posmc].calorias)
            posmc = i;
      
        //parte modificada, que organiza o vetor de maneira crescente
        for(j=0;j<num_receitas;j++){        
            if(receita[ i ].calorias >= receita[j].calorias){	//mude o >= para < ou <= caso a ordem fique errada.
                aux = receita[ i ].calorias;
                receita[ i ].calorias = receita[].calorias;
                receita[ j ].calorias = aux;
            }
        }
    }
    printf("\n------Receita %d------\n",posmc+1);
    printf("Nome da receita: %s\n",receita[posmc].nome);
    printf("Doce ou Salgada: %s\n",receita[posmc].ds);
    printf("Quantidade de calorias por porcao: %d\n",receita[posmc].calorias);
    printf("Tipo: %s\n",receita[posmc].tipo);
    printf("Modo de preparo: %s\n",receita[posmc].preparo);
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!