Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
cronon

[Resolvido] Pascal Vetores Alternados

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas corrija o "for" do final:


For w:=1 to 8 do
Begin
if w mod 2 = 1 then C[w]:=A[(w+1) div 2] else C[w]:=B[w div 2];
gotoxy(x,12);
write(C[w]);
x := x+2;
End;

Aguardando resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Editado por cronon
achei que tinha intendido, mas boiei :X

Compartilhar este post


Link para o post
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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
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 .

Compartilhar este post


Link para o post
Compartilhar em outros sites

huhu agora entendi a logica =P

valeu mesmo cara!

Fico de devendo uma.

abração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×