Ir ao conteúdo

Posts recomendados

Postado

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

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!