Ir ao conteúdo
  • Cadastre-se

Pascal Vetores Alternados


Visitante: cronon

Posts recomendados

Visitante: cronon
 

Fazer um programa em pascal que carregue os vetores A e B de quatro posiçoes. Gerar um vetor C de 8 posiçoes que seja a intercalaçao de A e B.

Ex: 1 1 1 1 <= A

2 2 2 2 <= B

1 2 1 2 1 2 1 2 <= C

Program Vetor_Alt ;
Uses crt;
Var
A , B : array [1..4] of Integer;
C : array [1..8] of Integer;
x , i , w : integer;
Begin
Clrscr;
Write ('Insira o valor dos vetor A e B: ');
x := 8;
For i := 1 to 4 do
Begin
gotoxy (x,4);
readln (A[i]);
x := (x+4);
End;
x := 8;
For i := 1 to 4 do
Begin
gotoxy (x,8);
readln (B[i]);
x := (x+4);
End;
x := 8;
w := 0;
For w := 1 to 8 do
Begin
gotoxy (x,12);
inc(w);
C[w] := (A[i]);
write (C[w]);
x := (x+2);
inc(w);
C[w] := (B[i]);
write (C[w]);
x := (x+2);
End;
Readkey;
End.

Meu vetor tá dando erro e nao sei como arrumar:

Erro de execuçao na linha 30
A posiçao 5 esta fora dos limites do vetor

Agradeço a ajuda!

Link para o comentário
Compartilhar em outros sites

Visitante: cronon
 

tipo acho que nao entendi seu pensando, mas a logica minha nao esta errada esta?

se tiver certa tem jeito de tentar arrumar isso?

poderia por gentileza explicar o que foi feito nao entendi muito bem sua equaçao!

seria : quando w divido por 2 for = 1 fazer:

vetorC = vetorA (w+1 div 2) <=== ???????

senao: vetorC = vetorB (w div 2) <=== ???????

Ahhh valeu tb!

seu metodo deu certo!

Abrazz!

Link para o comentário
Compartilhar em outros sites

O vetor C é basicamente [A1,B1,A2,B2,A3,B3,A4,C4].

Veja que, nas posições ímpares, usam-se os elementos do A. Veja também que C1=A1, C3=A2, C5=A3 e C7=A5. Há uma regularidade. C[w]=A[(w+1)/2].

Algo parecido ocorre nas posições pares, em que C[w]=B[w/2].

Usei DIV porque sei que o resultado vai ser inteiro, e isso é exigido na hora de compilar.

Analisando seu código:


For w := 1 to 8 do
Begin
gotoxy (x,12);
inc(w);
[B]C[w] := (A[[U]i[/U]]);[/B]
[B]write (C[w]);[/B]
x := (x+2);
inc(w);
[B]C[w] := (B[[U]i[/U]]);[/B]
[B]write (C[w]);[/B]
x := (x+2);
End;

No início do FOR, o valor de i é 4, desde o outro FOR. Além disso, seu valor não está sendo mudado durante o loop. Então, será sempre 4.

Talvez você possa corrigir alguma coisa, mas de qualquer forma o modo como fiz é mais curto e funciona.

Aguardando...

Link para o comentário
Compartilhar em outros sites

Visitante: cronon
 

Muito bem obrigado a ajuda!

Só fico a duvida na equaçao mesmo do W sendo dividido por 2.

O conceito eu entendi mais se W=2 intao 2/2 = 1 ai B nao iria pra gaveta 1?

Link para o comentário
Compartilhar em outros sites

Muito bem obrigado a ajuda!

De nada! Para isso estamos aqui: para ensinar e aprender.

Só fico a duvida na equaçao mesmo do W sendo dividido por 2.

O conceito eu entendi mais se W=2 intao 2/2 = 1 ai B nao iria pra gaveta 1?

Correto! O segundo elemento de C é o primeiro de B! Veja:


[I]{
A: k,l,m,n
B: o,p,q,r
C: k,o,l,p,m,q,n,r
}[/I]

Realmente, C[2]=B[1]=o .

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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