Jump to content


Photo

Ajuda Com Inversão De Vetores


  • Faça o login para participar
4 replies to this topic

#1 Clailton

Clailton

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino
  • Localidade:Fortaleza

Posted 25/02/2012, 17:15

Galera não estou conseguindo entender por que minha lógica não está funcionando. Ao meu entender eu no for da inversão quando (i for igual a 1 eu armazeno a primeira posição na variável auxiliar e pego a última posição do vetor com i:=11-i que dá igual a 10 e assim continuamente.) Porém quando vai escrever o programa não faz nenhuma inversão. Agradeço desde já quem me ajudar a entender por que minha lógica não funciona.

Program inversao_de_posicao ;
var
vetor,espelho:array[1..10]of integer;
x:integer;
i,j:integer;
Begin
for i:=1 to 10 do
begin
write('Escreva o vetor: ');
readln(vetor[i]);
espelho[i]:=vetor[i];
end;

for i:=1 to 10 do
begin
x:=vetor[i];
vetor[i]:=vetor[11-i];
vetor[11-i]:=x;
end;

for i:=1 to 10 do
writeln('Vetor original: ',espelho[i]);

write('');

for i:=1 to 10 do
writeln('vetor apos a inversao: ',vetor[i]);


End.

#2 Nara Ferreira

Nara Ferreira

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Feminino
  • Localidade:Rio de Janeiro

Posted 27/02/2012, 16:14

Galera não estou conseguindo entender por que minha lógica não está funcionando. Ao meu entender eu no for da inversão quando (i for igual a 1 eu armazeno a primeira posição na variável auxiliar e pego a última posição do vetor com i:=11-i que dá igual a 10 e assim continuamente.) Porém quando vai escrever o programa não faz nenhuma inversão. Agradeço desde já quem me ajudar a entender por que minha lógica não funciona.

Program inversao_de_posicao ;
var
vetor,espelho:array[1..10]of integer;
x:integer;
i,j:integer;
Begin
for i:=1 to 10 do
begin
write('Escreva o vetor: ');
readln(vetor[i]);
espelho[i]:=vetor[i];
end;

for i:=1 to 10 do
begin
x:=vetor[i];
vetor[i]:=vetor[11-i];
vetor[11-i]:=x;
end;

for i:=1 to 10 do
writeln('Vetor original: ',espelho[i]);

write('');

for i:=1 to 10 do
writeln('vetor apos a inversao: ',vetor[i]);


End.



O problema começa quando chega na posição 6 do vetor.

Motivo do problema:
Nas primeiras 5 vezes que o FOR rodou, ele já inverteu todos os valores, agora, quando ele rodar da posição 6 em diante, ele vai inverter novamente, colocando todos no lugar que começaram.

Exemplo:
Valores digitados:
vetor[1] = 10;
vetor[2] = 9;
vetor[3] = 8;
vetor[4] = 7;
vetor[5] = 6;
vetor[6] = 5;
vetor[7] = 4;
vetor[8] = 3;
vetor[9] = 2;
vetor[10] = 1;

Quando o FOR rodar, acontecerá o seguinte:
Posição 1 do FOR
x = 10;
vetor[1] = 1;
vetor[10] = 10;

Posição 2 do FOR
x = 9;
vetor[2] = 2;
vetor[9] = 9;

Posição 3 do FOR
x = 8;
vetor[3] = 3;
vetor[8] = 8;

Posição 4 do FOR
x = 7;
vetor[4] = 4;
vetor[7] = 7;

Posição 5 do FOR
x = 6;
vetor[5] = 5;
vetor[6] = 6;

Como você pode perceber, todos os valores já foram invertidos.
Agora, como faltam mais 5 vezes para ele rodar, ele vai começar a inverter tudo de novo.
Ou seja:

Posição 6 do FOR
x = 6;
vetor[6] = 5;
vetor[5] = 6;

Posição 7 do FOR
x = 7;
vetor[7] = 4;
vetor[4] = 7;

E assim por diante...até ele retornar a como começou.

Uma solução:
Faça o for rodar só até a metade do vetor(array), ou seja, como ele tem 10 posições, coloque o limite do for até 5.

for i:=1 to 5 do

begin

x:=vetor[i];
vetor[i]:=vetor[11-i];
vetor[11-i]:=x;

end;


Edição feita por: Nara Ferreira, 27/02/2012, 16:16.


#3 Marketing Digital

Marketing Digital

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 28/02/2012, 11:54

Perfeito Nara!!

#4 Clailton

Clailton

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino
  • Localidade:Fortaleza

Posted 29/02/2012, 00:26

Nara Ferreira muito obrigado, xxxxxx como eu não pensei nisso,huahauhha. To começando agora mais deveria ter essa lógica de entender isso dai. Muito obrigado Nara.

#5 Nara Ferreira

Nara Ferreira

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Feminino
  • Localidade:Rio de Janeiro

Posted 29/02/2012, 14:02

Nara Ferreira muito obrigado, xxxxxx como eu não pensei nisso,huahauhha. To começando agora mais deveria ter essa lógica de entender isso dai. Muito obrigado Nara.


De nada =)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq