Ir ao conteúdo
  • Cadastre-se

C Encontrar os 10 maiores valores de um vetor


Danilo Henriq

Posts recomendados

Eae galera beleza, 

 

estava resolvendo uma lista de algoritmos e neste problema estou com dificuldade

 

"8. Elabore um algoritmo que leia um vetor H[50] de reais e retorna um vetor X com os 10 maiores valores de H.  "

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



/*
8. Elabore um algoritmo que leia um vetor H[50] de reais e retorna um vetor X com os 10 maiores valores de H.
*/

int main(){

    setlocale(LC_ALL,"portuguese_Brazil");

    float H[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}, maior;
    float M[10];
    int i, j,cont=0, posi, z=0;

    maior = H[0];

    for(i=0;i<20;i++){

        for(j=0;j<20;j++){
            if(H[j]>maior){
                maior = H[j];
            }
        }

    M[i]= maior;
    }


    for(i=0;i<20;i++){
        printf("\n%.2f\n", M[i]);
    }





return 0;
}

na minha concepção teria que ter funcionado porém não me retorna os 10 valores alguém poderia apontar onde é que estou errando e dar uma sugestão.

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

@Danilo Henriq    para pegar os dez maiores números com apenas uma variável fica bem difícil, mas como os números estão em um vetor o melhor é organizar esse vetor por ordem decrescente e então pegar os dez primeiros números que estarão no vetor em ordem decrescente, e para organizar o vetor você pode usar o método bubblesort .
   e você está imprimindo de zero até vinte ,mas o vetor M só tem dez posições,  então seu código com algumas modificações ficaria assim :
 

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

/*
8. Elabore um algoritmo que leia um vetor H[50] de reais e retorna um vetor X com os 10 maiores valores de H.
*/

int main(){

    setlocale(LC_ALL,"");

    float M[10];
    int i,j,aux;
    float H[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

    for(i=0;i<20;i++){
        for(j=i+1;j<20;j++){
            if(H[i] < H[j]){
                aux=H[j];
                H[j]=H[i];
                H[i]=aux;
            }
        }
    }
    for(i=0;i<10;i++){
        M[i]=H[i];
    }
    for(i=0;i<10;i++){
        printf("Valor De M[i]= %.2f\n", M[i]);
    }

    return 0;
}

 

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

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