Martinsrj 0 Denunciar post Postado Março 31, 2009 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
Kandrade 7 Denunciar post Postado Abril 1, 2009 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
Martinsrj 0 Denunciar post Postado Abril 1, 2009 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