Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda em vetores - Pascal


Glauco Machado

Pergunta

Saudações, preciso fazer o seguinte exercício pra facul, porém me perdi na lógica, alguém poderia me dar alguma sugestão?

-Leia dois vetores de 5 posições e calcule um outro vetor contendo, nas posições pares os valores do primeiro e nas posições impares os valores do segundo.

Program Exercicio_07;
 Var
     vetor_a, vetor_b:array [1..5] of integer;
     vetor_c:array [1..10] of integer;
     i, x, y:integer;
 Begin
     x := 1;
     y := 1;
     for i := 1 to 5 do
     begin
        read (vetor_a[i]);  
        read (vetor_b[i]); 
    end;
    for i := 1 to 10 do
    begin
        if i mod 2 = 0 then
        begin
            vetor_c[i] := vetor_a[x];
            x := x + 1;
        end
        else
        begin
            vetor_c[i] := vetor_b[y];
            y := y + 1;
        end;
        
        for i := 1 to 10 do
        write (vetor_c[i]);
    end;
 End.

Obrigado, pessoal!! :)

Editado por Glauco Machado
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
-Leia dois vetores de 5 posições e calcule um outro vetor contendo, nas posições pares os valores do primeiro e nas posições impares os valores do segundo.

Se não for isso, faça as modificações

program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;

Var
    vetor_a, vetor_b:array [1..5] of integer;
    vetor_c:array [1..10] of integer;
    i, x, y, z:integer;
Begin
     x := 0;
     y := 0;
    for i := 1 to 5 do
    begin
        read (vetor_a[i]);
        read (vetor_b[i]);
    end;

    for i := 1 to 10 do
    begin
        if vetor_a[i] mod 2 = 0 then
        begin
            x := x + 1;
            vetor_c[i] := vetor_a[x];
        end;

        if vetor_b[i] mod 2 <> 0 then
        begin
            y := y + 1;
            vetor_c[i] := vetor_b[y];
        end;

    end;

   writeln('Valores Pares');
   for z := 1 to 10 do
   begin
     if z mod 2 = 0 then
        writeln (vetor_c[z]);
   end;

   writeln('Valores Impares');
   for z := 1 to 10 do
   begin
     if z mod 2 <> 0 then
        writeln (vetor_c[z]);
   end;

End.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado, Jhonas, mas não funfou. não!!

Deu erro na linha 20.

for i := 1 to 10 do
    begin
        if vetor_a[i] mod 2 = 0 then

"O índice na posição 6 está fora dos limites do vetor."

O vetor foi declarado com 5 posições e não pode ser lidos além disso --> for i := 1 to 10 do

E o que eu preciso não é calcular se os valores dos vetores a e b são pares ou ímpares, mas quando o índice do vetor_c for par receber os valores do vetor_a e quando for ímpar os do vetor_b.

Eu preciso guardar nas posições: 2, 4, 6, 8 e 10 do vetor_c os valores do vetor_a e nas posições: 1, 3, 5, 7 e 9 os valores do vetor_b.

Alguma idéia, pessoal?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0
E o que eu preciso não é calcular se os valores dos vetores a e b são pares ou ímpares, mas quando o índice do vetor_c for par receber os valores do vetor_a e quando for ímpar os do vetor_b.

Eu preciso guardar nas posições: 2, 4, 6, 8 e 10 do vetor_c os valores do vetor_a e nas posições: 1, 3, 5, 7 e 9 os valores do vetor_b.

veja a modificação

program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;

Var
    vetor_a, vetor_b:array [1..5] of integer;
    vetor_c:array [1..10] of integer;
    i, x, y, z:integer;
Begin
     x := 0;
     y := 0;
    for i := 1 to 5 do
    begin
        read (vetor_a[i]);
        read (vetor_b[i]);
    end;

    for i := 1 to 10 do
    begin
        if i mod 2 = 0 then
          begin
            x := x + 1;
            vetor_c[i] := vetor_a[x];
          end
        else
          begin
            y := y + 1;
            vetor_c[i] := vetor_b[y];
          end;
    end;

   writeln('Valores do Vetor A');
   writeln('');
   for z := 1 to 10 do
   begin
     if z mod 2 = 0 then
        begin
           writeln('Vetor '+inttostr(z) + ' = ' + inttostr(vetor_c[z]));
           writeln('');
        end;
   end;
   writeln('');
   writeln('Valores do Vetor B');
   writeln('');
   for z := 1 to 10 do
   begin
     if z mod 2 <> 0 then
        begin
           writeln('Vetor '+inttostr(z) + ' = ' + inttostr(vetor_c[z]));
           writeln('');
        end;
   end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, obrigado novamente, mas deu erro dizendo que inttostr não foi declarado no programa. E o resultado é quase o que eu queria.

Eu consegui resolver com o seguinte código:

Program Exercicio_07;
 Var
     vetor_a, vetor_b:array [1..5] of integer;
     vetor_c:array [1..10] of integer;
     i, x, y:integer;
 Begin
     x := 1;
     y := 2;
     for i := 1 to 5 do
     begin
        read (vetor_a[i]);  
        read (vetor_b[i]); 
    end;
    for i := 1 to 5 do
    begin
        vetor_c[x] := vetor_b[i];
        vetor_c[y] := vetor_a[i];
        x := x + 2;
        y := y + 2;
    end;
    for i := 1 to 5 do
    write (vetor_a[i]);
    writeln;
    for i := 1 to 5 do
    write (vetor_b[i]);
    writeln;
    for i := 1 to 10 do
        write (vetor_c[i]); 
 End.
Mas vou aproveitar o seguinte trecho do seu código, por estar mais limpo que o meu:
program Project2;


Var
    vetor_a, vetor_b:array [1..5] of integer;
    vetor_c:array [1..10] of integer;
    i, x, y, z:integer;
Begin
     x := 0;
     y := 0;
    for i := 1 to 5 do
    begin
        read (vetor_a[i]);
        read (vetor_b[i]);
    end;

    for i := 1 to 10 do
    begin
        if i mod 2 = 0 then
          begin
            x := x + 1;
            vetor_c[i] := vetor_a[x];
          end
        else
          begin
            y := y + 1;
            vetor_c[i] := vetor_b[y];
          end;
    end;

daí é só eu exibir o conteído do vetor_c

Muito obrigado, meu camarada.

Abraço :)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...