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
  • Autor do tópico
  • 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
  • Autor do tópico
  • 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
  • Autor do tópico
  • 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

    ×