Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fekz

Inversão de array/vetor

Recommended Posts

Galera, preciso criar um script que inverta o vetor, sem usar 2 vetores, e sem nenhuma função pré-definida por nenhuma linguagem, só com lógica mesmo.

fiz o seguinte:

 

INICIO
int vetorinvertido[100]; // professora mandou usar 100 pq em PORT EST não se pode adicionar vetores automaticamente.
int i, contador, auxiliar, quantidadedeposicoes
IMPRIMA "Digite o número de posições"
LEIA quantidadedeposicoes
PARA i de 0 ate quantidadedeposicoes-1 PASSO 1 FAÇA
  LEIA vetorinvertido[i]
FIM PARA
contador = quantidadedeposicoes-1
PARA i de 0 ate quantidadedeposicoes-1 PASSO 1 FAÇA
  auxiliar = vetorinvertido[contador];
  vetorinvertido[contador] = vetorinvertido[i];
  vetorinvertido[i] = auxiliar
  IMPRIMA "O valor do vetorinvertido é: ", vetorinvertido[i]
FIM PARA
FIM

2 coisas:

Se eu fizer isso, quando chega na metade, começa a destrocar tudo de novo, então precisava de uma lógica tipo while(vai até o meio do contador), continue fazendo, dps pare.

 

E saber se mando imprimir dentro do PARA ou fora do PARA. Obrigado, espero ajuda por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para parar na metade voce pode usar o próprio loop para, basta alterar a condição de parada.

Algo desse tipo:

 

PARA i de 0 ate (quantidadedeposicoes-1)/2 PASSO 1 FAÇA

2 coisas:

Se eu fizer isso, quando chega na metade, começa a destrocar tudo de novo, então precisava de uma lógica tipo while(vai até o meio do contador), continue fazendo, dps pare.

Imprima fora em um outro loop.

 

E saber se mando imprimir dentro do PARA ou fora do PARA. Obrigado, espero ajuda por favor.

Obs: Dentro do loop contador não muda de valor, então voce utilizará sempre essa mesma posição. Voce precisa fazer um cálculo ou decrementar essa variável para inverter corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz isso em Javascript, ele está fazendo até metade, mas não imprimo os outros valores depois da metade.

 

Veja:

 

<script>
troca = new Array()
troca[0] = 5
troca[1] = 10
troca[2] = 15
troca[3] = 20
troca[4] = 30
troca[5] = 40
troca[6] = 50
for (i=0; i< troca.length; i++){
document.write(troca[i] + "<br />");
}
document.write("<br /><br />")

j=6;	
i=0;
if (i<=j/2 ){	
for(i=0; i<=2; i++){
auxiliar = troca[j];
troca[j] = troca[i];
troca[i] = auxiliar;
j--;
document.write(troca[i] + "<br />");
}
i++;
}

</script>

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima os valores em outro loop.

 

if (i<=j/2 ){	
	for(i=0; i<=2; i++){
		auxiliar = troca[j];
		troca[j] = troca[i];
		troca[i] = auxiliar;
		j--;
	}
	for(i=0; i<=6; i++)
		document.write(troca[i] + "<br />");
}

Obs: Sua lógica pra esse caso funciona, mas não pra todos.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima os valores em outro loop.

 

if (i<=j/2 ){	
for(i=0; i<=2; i++){
	auxiliar = troca[j];
	troca[j] = troca[i];
	troca[i] = auxiliar;
	j--;
}
for(i=0; i<=6; i++)
	document.write(troca[i] + "<br />");
}

 

Obs: Sua lógica pra esse caso funciona, mas não pra todos.

 

:thumbsup:

 

 

 

 

 

 

 

Tá o algoritmo em visulg funcionando perfeitamente para qualquer caso queira em outra linguagem é só traduzir, dúvidas mande-me email.

 

var
c:caracter
tam,i:inteiro
vet:vetor[1..255]de caracter

inicio
// Seção de Comandos
leia(c)
tam <- compr(c)

para i de 1 ate tam faca
vet[i] <- copia(c,i,1)
fimpara

para i de tam ate 1 passo -1 faca
 escreva(vet[i])
fimpara

fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.