• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jamirooo

[Resolvido] Aceder ao segundo maior numero num vector de inteiros

9 mensagens neste tópico

:down: peço desculpa por insistir novamente no mesmo assunto, o anterior ficou resolvido, para obter o maior e o menor numero num vector fiz algo como isto:

int max=0;
for(int i = 0; i<v.length;i++){
     max = v[i];
       for(int j = 0;j<v.length;j++){
          if(v[j]>=max){
               max=v[j];
}}}

E agora preciso de obter o Segundo maior numero....e nao tou mesmo a ver como se faz....se alguém pudesse dar um "empurrãozinho" agradecia... :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei bem que ajudas te deram no outro tópico mas porque é que o vector não está ordenado? Acho que isso não foi mencionado no tópico.

Se tens de percorrer o vector para encontrar o maior, menor e segundo maior, não seria mais simples ordenares o vector e simplesmente acederes à primeira, última e segunda posição, respectivamente?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois...talvez fosse mais simples...mas esta foi a unica maneira que encontrei... :down:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os algoritmos de ordenação são bastante simples de implementar e dessa forma, se as posições a que queres aceder são fixas, é mais simples encontrar o valor, por outro lado, se o vector se encontrar ordenado, as pesquisas podem tornar-se mais rápidas. Talvez a opção seja mesmo ordenar primeiro o vector :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas se ele estiver numa situação em que o vector está em constante mudança e ele tem que encontrar de cada vez o maior ou o segundo maior, compensa iterar apenas uma vez no vector em vez de estar a ordená-lo de cada vez que é computacionalmente menos eficiente. Claro que se o vector é sempre o mesmo então faz todo o sentido ordená-lo.

Ah, já agora, para aceder ao segundo maior achas o máximo entre o primeiro e o segundo elemento, e guardas esse em 'max' e o outro em '2max', depois iteras a partir da 3ª posição e comparas com o 2max, se for maior comparas com o max senão n fazes nada, se for menor que o max substituis o 2max por esse, se for maior substituis o 2max pelo max e o max por esse. Et voilà, no fim tens o maior no max e o segundo maior no 2max.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, se ele está a trabalhar em Java com um vector de inteiros que está em constante mudança, ou tem uma razão muito especifica ou está a usar a estrutura errada.

Além disso, o vector ordena-se apenas uma vez e todas as introduções serão ordenadas, a não ser que o vector tenha milhares de registos, a ordenação inicial é insignificante a nível de performance, uma introdução ordenada já dependerá da forma como for feita.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que estou a fazer é um programa muito simples...primeiro pergunto ao utilizador a dimensão do vector, depois crio um vector com essa dimensão.

De seguida pergunto ao utilizador qual o valor que ele deseja introduzir em cada posição do vector(ex.:" Posição 0: 2 ;  Posição  1: 1423.....".

Depois o exercício pede para calcular a média e o segundo maior numero, a média já está...o 2º maior numero é que ta mais complicado...tou a tentar fazer com base no que fiz para calcular o maior numero de todos...mas não estou a conseguir... :wallbash:    De qualquer maneira, obrigado pela ajuda. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Seguindo essa ideia, ao calculares o maior número, o segundo maior é menor que o primeiro e maior que todos os outros :cheesygrin:, é apenas uma verificação simples e um pequeno acrescento ao que te deram no outro tópico.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já está resolvido! :D  ficou um pouco "grande" mas pronto...com a prática isto melhora...Obrigado a todos pela Ajuda! :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora