Ir ao conteúdo
  • Cadastre-se

C Encontrar o n-ésimo termo


Posts recomendados

Alguem poderia me ajudar?

 

Escreva um algoritmo para calcular e escrever o n-ésimo maior termo de um vetor, onde o valor de N e o vetor  serao informado pelo usuário.

 

por exemplo se temos o vetor ( 5, 6, 11, 12, 17, 18, 23, 24), e Se de N for igual a 3, deve ser impresso o valor 18. Se o valor de N for igual 5, deve ser impresso o valor 12. Se o valor de N for igual a 8, deve ser impresso o valor 5

#include <stdio.h>
#define x 5


main(){

int vetor[x],posicao,i,j,maior=0;

printf ("Digite uma sequencia de numeros de tamanho: %d", x);
printf ("Apenas numeros positivos e inteiros: ");
for (i=0;i<x;i++){
    scanf("%d",&vetor[i]);
}

printf ("Digite um valor inteiro e Positivo.");
printf("Para encontrar o maior elemento da sequencia previamente digitada,/nDigite um numero:");
scanf("%d",&posicao);
printf("\n\n");
for (i=0;i<x;i++){
    printf("%d, ",vetor[i]);
}

 for (i=0;i<x;i++){
    if(vetor[i]>maior){
        maior=vetor[i];
    }
}
printf("\nmaior = %d",maior);
}

.

PS .: O vetor não deve ser duplicado e nem modificado (não ordene).

ps1.: considere que o vetor não tem números repetidos.

 

Eu sei que tem que encontrar o maior numero 1º, mas depois disso, nao faco ideia de ocmo fazer.

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

4 horas atrás, robson s martins disse:
4 horas atrás, robson s martins disse:

calcular e escrever o n-ésimo maior termo de um vetor, onde o valor de N e o vetor  serao informado pelo usuário

ei que tem que encontrar o maior numero 1º, mas depois disso, nao faco ideia de ocmo fazer

 

Esse não é um exercío de programação e sim um exercício de lógica.

 

Se
 

T é o total de valores e

  • você quer o maior termo: basta fazer o que eu acho que você já fez: um loop vê todos os caras e marca o maior.
  • Agora para o n-ésimo maior você tem que N <= T, como no seu exemplo com 8 números. Lógico que para N = T você vai acabar mostrando o menor número, já que ele ficou sózinho... O quarto maior de uma série de 4 vai ser também o menor dos quatro.

Para os outros casos, apenas use um loop até N e sempre salve o maior até aqui. E ignore todos maiores que esse valor.

 

Ex: Seguindo essa nomenclatura considere a série [ 6,5,4,3 ] e N = 3. T = 4 claro.

  • O primeiro loop vai definir Max = 6
  • O segundo loop vai ser igualzinho o primeiro, calcular o maior valor, desconsiderando os valores maiores que o maior até aqui, que era 6. Vai identificar o 5
  • O terceiro loop vai dar a resposta porque N=3. Vamos passar por todo o vetor para encontrar o máximo, mas desprezando qualquer valor maior que o anterior, 5

Acho que já entendeu: são apenas dois loops e uma variável que você pode chamar de

int    gatilho = INT_MAX;       // o maior valor de um int no seu compilador, ou
int    gatilho = +2147483647;   // o maior valorpositivo com 4 bytes

a cada loop você coloca o maior valor lá e esse vai ser o gatilho para pular os maiores achados em passagens anteriores. É só isso. Esse valor tem que ser maior que todos então pode usar essa constante que sempre tem o valor certo, ou simplesmente forçar o maior número como está acima.

 

Outro exemplo:

 

[ 5, 6, 11, 12, 17, 18, 23, 24 ] : T = 8, N = 5, Max = ?

 

Sim, essa é a série do enunciado. Para N = 5 eis o comportamento:

  1. 24 no primeiro loop, desprezando os valores >= INT_MAX --- que é o maoir valor possível. Gatilho passa a ser 24
  2. 23 no segundo loop, desprezando os maiores >= 24. Gatilho passa a ser 23
  3. 18 no segundo loop, desprezando os maiores >= 23. Gatilho passa a ser 18
  4. 17 no segundo loop, desprezando os maiores >= 18. Gatilho passa a ser 17
  5. 12 no segundo loop, desprezando os maiores >= 17. Gatilho passa a ser 12

Fim

 

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!