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

(Resolvido) Queria saber o porque de um algoritmo Pascal.


ucastro

Pergunta

Tem um exercício que pede para fazer o seguinte:

Ler duas matrizes do tipo vetor A com 20 elementos e B com 30 elementos. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma, C deverá ter a capacidade de armazenar 5O elementos.

Tinha feito mas não dava certo. Até que pesquisando vi que teria que colocar B[i-20] e daí funcionou. Vejam o algoritmo abaixo e expliquem de modo simples porque tem de ser B[i-20] e não B.

program JuncaoDeVetores;
uses crt;
var    
       A:array[1..20]of integer;
       B:array[1..30]of integer;
       C:array[1..50]of integer;
       i:integer;
begin
  clrscr;
write('Escreva 50 números');
  for i:=1 to 20 do
  readln(A[i]);

  for i:=1 to 30 do
  readln(B[i]);

  for i:=1 to 50 do
  begin
  if i<=20 then
  C[i]:=A[i]
  else
  C[i]:=B[i-20]; {A princípio tinha colocado B[i] e não dava certo}
  end;

  for i:=1 to 50 do
  begin
  writeln(C[i]:5);
  end;
  writeln;
  writeln('Pressione [Enter] para prosseguir.');
  readln;
end.

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

2 respostass a esta questão

Posts Recomendados

  • 0

Até que pesquisando vi que teria que colocar B[i-20]e daí funcionou. Vejam o algoritmo abaixo e expliquem de modo simples porque tem de ser B[i-20] e não B.

for i:=1 to 50 do
  begin
  if i<=20 then
  C[i]:=A[i]
  else
  C[i]:=B[i-20]; {A princípio tinha colocado B[i] e não dava certo}
  end;
quando voce colocou B[i-20] ... o i representa o valor da variavel i que esta no comando for ( que varia de 1 ate 50) ou seja, voce estará subtraindo de cada valor da varavel i (20) o resultado para B[i-20]..B 1....... 1 2....... 2 3....... 3 4....... 4 5....... 5 6....... 6 7....... 7 8....... 8 9....... 9 10....... 10 11....... 11 12....... 12 13....... 13 14....... 14 15....... 15 16....... 16 17....... 17 18....... 18 19....... 19 20....... 20 1....... 21 2....... 22 3....... 23 4....... 24 5....... 25 6....... 26 7....... 27 8....... 28 9....... 29 10....... 30 11....... 1 12....... 2 13....... 3 14....... 4 15....... 5 16....... 6 17....... 7 18....... 8 19....... 9 20....... 10 21....... 11 22....... 12 23....... 13 24....... 14 25....... 15 26....... 16 27....... 17 28....... 18 29....... 19 30....... 20
for i:=1 to 20 do
  A[i]:=i;

  for i:=1 to 30 do
  B[i]:= i;

  for i:=1 to 50 do
  begin
     if i<=20 then
        C[i]:=A[i]
     else
        C[i]:=B[i];
     end;
  end;

isto tambem funciona e o resultado esta em acima

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...