Escreva um algoritmo que leia um vetor de 10 posições e mostre-o. Faça um procedimento que faça um vetor inverso, trocando o 1º elemento com o último, o 2º elemento com o penúltimo e assim sucessivamente. Mostre o novo vetor depois da troca.
Quando mostro o vetor ele não ordena, onde estou errando ?
Segue o código :
Seu principal erro é aqueles 2 loops. Eles estão rodam umas cem vezes pra não surtir efeito nenhum. Acrescentei um contador no seu método inverso pra vc ver, faz o teste com isso:
O legal dessa forma que fiz, usando o atributo length do array é que vc pode usar um vetor de qualquer tamanho que irá funcionar normalmente, pelo menos assim espero!
L
leandronsp2 likes
O problema está exatamente onde o @wldomiciano escreveu.
Além de não fazer nada neste caso, esse for dentro do outro aí adiciona uma complexidade tamanha no seu algoritmo: pra cara elemento ele percorre o vetor todo novamente, o que torna uma complexidade n^2 (quadrática). Dependendo do tamanho do vetor isso poderia levar muito tempo pra ser executado.
Dá pra fazer como ele recomendou (com while), mas se não quiser mudar toda a lógica do teu algoritmo, basta fazer apenas um for que vai até a metade do vetor:
for(i=0; i < v.length / 2; i++, j--) {
Daí é só fazer a troca.
J
Josee2 likes
Obrigado cara, consegui melhor meu erro depois do contador.