Ir para conteúdo

POWERED BY:

Arquivado

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

Martinsrj

diferença entre elemento e o indice do vetor

Recommended Posts

Olá pessoal, beleza? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Estou estudando lógica através de um livro de pascal. Estou me deparando com uma dúvida de vetor entre indice e o elemento. O código abaixo verifica o elemento (o que o usuario digitou no programa) e a assim verifica se o numero é par ou impar.

Exemplo:

se o usuario digitar na seguinte ordem: 1, 1, 1, 1, 1, 1, 1, 1, 1, 2

o resultado vai se esse: 6, 6, 6, 6, 6, 6, 6, 6, 6, 10

Esse eu entendi, pois o usuario digitou 1 (impar) então o programa irá pegar o numero 1 + 5 = 6

Program check_indice;
Uses crt;
Var
vet_a, vet_b: array [1..10] of integer;
i : integer;
Begin 
  clrscr;
  Writeln ('Programa que faz a leitura de 10 elementos de uma matriz A do tipo vetor.  A Matriz B do mesmo tipo, acompanhando a seguinte lei de  formação: se valor do elemento for par, o valor deve ser multiplicado por 5; sendo impar, deve ser somado com 5. Ao final, mostrar os conteudos das duas matrizes.');
For i := 1 to 10 do
  Begin
	Writeln ('Digite o ', i, 'valor:');
	readln (vet_a[i]);
End;
For i := 1 to 10 do
  Begin
	[b]if vet_a[i] mod 2 = 0 then[/b]
	  vet_b[b] := vet_a[i] *5
	else
	  vet_b[i] := vet_a[i] +5;
  End;
For i := 1 to 10 do
  Begin
	writeln ('Valores do vetor A: ', vet_a[i]);
  end;
For i := 1 to 10 do
  Begin
	writeln ('Valores do vetor B: ', vet_b[i]);
  end;
readkey;
End.
Porem no livro dar um outro exemplo de verificação através do indice se é par ou impar, código abaixo.

Exemplo se o usuário digitar na seguinte ordem: 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 o resultado vai ser esse:

6, 5, 6, 5, 6, 5, 6, 5, 6, 10

Não entendi o resultado. Solicito uma ajuda como o programa realizou a operação do indice.

Verifique o código abaixo:

Program check_indice;
Uses crt;
Var
vet_a, vet_b: array [1..10] of integer;
i : integer;
Begin 
  clrscr;
  Writeln ('Programa que faz a leitura de 10 elementos de uma matriz A do tipo vetor.  A Matriz B do mesmo tipo, acompanhando a seguinte lei de  formação: se valor do indice for par, o valor deve ser multiplicado por 5; sendo impar, deve ser somado com 5. Ao final, mostrar os conteudos das duas matrizes.');
For i := 1 to 10 do
  Begin
	Writeln ('Digite o ', i, 'valor:');
	readln (vet_a[i]);
End;
For i := 1 to 10 do
  Begin
	if i = 0 then
	  vet_b[b] := vet_a[i] *5
	else
	  vet_b[i] := vet_a[i] +5;
  End;
For i := 1 to 10 do
  Begin
	writeln ('Valores do vetor A: ', vet_a[i]);
  end;
For i := 1 to 10 do
  Begin
	writeln ('Valores do vetor B: ', vet_b[i]);
  end;
readkey;
End.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce testou o código?

 

Vou pegar o trecho onde o vetor b é construido. Veja:

 

For i := 1 to 10 do
  Begin
	[b]if i = 0 then[/b]
	  vet_b[b] := vet_a[i] *5
	else
	  vet_b[i] := vet_a[i] +5;
  End;

O for utiliza a variável "i" como índice e o loop inicializa i com o valor 1.

A cada iteração o valor de i é incrementado em 1 até chegar ao valor 11 que sai do laço.

Portanto i vai variar de 1 até 10.

 

Concusão: o if não será executado e toda iteração do laço executará o bloco que está no else.

Isso fará com que vet_b contenha cada valore de vet_a somado com 5.

 

Obs: b que é índice do vet_b no if não está definido, portanto nem compilar o código vai.

 

Verifique se há algum erro de digitação e tente testar o programa.

Se tiver dúvidas volte a postar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce testou o código?

 

Vou pegar o trecho onde o vetor b é construido. Veja:

 

For i := 1 to 10 do
  Begin
	[b]if i = 0 then[/b]
	  vet_b[b] := vet_a[i] *5
	else
	  vet_b[i] := vet_a[i] +5;
  End;

O for utiliza a variável "i" como índice e o loop inicializa i com o valor 1.

A cada iteração o valor de i é incrementado em 1 até chegar ao valor 11 que sai do laço.

Portanto i vai variar de 1 até 10.

 

Concusão: o if não será executado e toda iteração do laço executará o bloco que está no else.

Isso fará com que vet_b contenha cada valore de vet_a somado com 5.

 

Obs: b que é índice do vet_b no if não está definido, portanto nem compilar o código vai.

 

Verifique se há algum erro de digitação e tente testar o programa.

Se tiver dúvidas volte a postar.

Olá Kandrade!

Os dois códigos estão funcionando perfeitamente (elemento e o indice), porem não entendi como que o programa realiza a operação do codigo (indice).

Exemplo se o usuário digitar na seguinte ordem: 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 o resultado vai ser esse:

6, 5, 6, 5, 6, 5, 6, 5, 6, 10. não entendi como que o programa chegou a esse resultado. Obs.: o resultado está correto!!!

 

Eu entendi o codigo do elemento, pois se o usuario digitar na seguinte ordem: 1, 1, 1, 1, 1, 1, 1, 1, 1, 2

o resultado vai se esse: 6, 6, 6, 6, 6, 6, 6, 6, 6, 10

Esse eu entendi, pois o usuario digitou 1 (impar) então o programa irá pegar o numero 1 + 5 = 6.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.